当前位置:  编程技术>移动开发
本页文章导读:
    ▪退出重进程序,TextView不可见(不显示)有关问题(极少情况上遇到)        退出重进程序,TextView不可见(不显示)问题(极少情况下遇到)   这个问题,在极少情况下可能会遇到,下面会有可能有效的解决方法,但是其中原理还不知道。 在项目中,在线程中获取.........
    ▪ unity口试第二天        unity面试第二天1.这两天找工作突然发现,之前很关心薪资问题,这段时间找工作突然让我意识到自己的价值,钱现在不是事,能让自己学到东西进步才是最重要的。 2.手游比pc网游简单,pc网.........
    ▪ 怎么使用TCP向远端SERVER传输数据 (发送与接收)       如何使用TCP向远端SERVER传输数据 (发送与接收) 1. 如何使用TCP向远端SERVER传输数据 先要建立一个TCP连接.模块作为CLIENT向远程的SERVER发起一个TCP连接,要成功 建立连接需要SERVER端为连接到INTERNET.........

[1]退出重进程序,TextView不可见(不显示)有关问题(极少情况上遇到)
    来源: 互联网  发布时间: 2014-02-18
退出重进程序,TextView不可见(不显示)问题(极少情况下遇到)

  这个问题,在极少情况下可能会遇到,下面会有可能有效的解决方法,但是其中原理还不知道。

在项目中,在线程中获取信息,然后通过handler传递,在handler的handleMessage方法中处理信息并且用一个TextView把信息显示出来。

demo版本代码:

public class DemoActivity extends Activity implements OnClickListener{
	private Button mButton;
	private TextView mTextView;
	public static int i = 0;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		mButton = (Button)findViewById(R.id.button);
		mButton.setOnClickListener(this);
		mTextView = (TextView)findViewById(R.id.textView);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.button:
			changeTextView();
			break;

		default:
			break;
		}
	}

	Handler mHandler = new Handler(new Handler.Callback() {

		@Override
		public boolean handleMessage(Message msg) {
			mTextView.setText("i = " + i++ + ", j = " + msg.arg1);
			return true;
		}
	});

	private void changeTextView() {
		new Thread(new Runnable() {

			@Override
			public void run() {
				int j = 0;
				try {
					while (j < 5) {
						j++;
						Message msg = Message.obtain();
						msg.arg1 = j;
						mHandler.sendMessage(msg);
						Thread.sleep(2000);
					}
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}).start();
	}
}

情况近似于上面demo代码,但是上面代码中没有出现下面将要说到得问题。在我的项目代码中,第一次装上应用,完全没有问题,handler传递消息,handlerMessage方法处理消息,然后可以在TextView中显示出来。但是,当按返回键退出程序后,再一次进入,通过handler传递消息,在handlerMessage方法中处理消息,在log显示,可以获取消息,但是TextView却不能显示。使用以下代码打印Log:

if (mResultText.isShown()) {
								Log.v("@@@@@@", "mResult is  shown  in @@@@@");
							} else {
								Log.v("@@@@@@", "mResult is not shown  in @@@@@");
							}

执行

Log.v("@@@@@@", "mResult is not shown  in @@@@@");
也就是说,当再次进入程序后,mResultText(一个textview)  isShown方法返回false,不可见。

设置为可见:

mResultText.setVisibility(View.VISIBLE);

也不起作用。

解决方法:

把mResultText设为静态:

private static TextView mResultText;

问题解决,但是其中原理还不明白。如果有清楚原因者,望相告,谢谢(注:Activity的launchMode="singleInstance")。同时,这个问题应该很少会有人遇到。




    
[2] unity口试第二天
    来源: 互联网  发布时间: 2014-02-18
unity面试第二天

1.这两天找工作突然发现,之前很关心薪资问题,这段时间找工作突然让我意识到自己的价值,钱现在不是事,能让自己学到东西进步才是最重要的。

2.手游比pc网游简单,pc网游都是计算机图形学和多线程的问题。手游方面这方面要求的不多。


这套题就不难了吧,呵呵~~~


1楼li5414昨天 14:58这是哪家公司的啊,以后混不下去我也去面试

    
[3] 怎么使用TCP向远端SERVER传输数据 (发送与接收)
    来源: 互联网  发布时间: 2014-02-18
如何使用TCP向远端SERVER传输数据 (发送与接收)


1. 如何使用TCP向远端SERVER传输数据
先要建立一个TCP连接.模块作为CLIENT向远程的SERVER发起一个TCP连接,要成功
建立连接需要SERVER端为连接到INTERNET的一台PC,而且该PC的IP地址是公网的IP地址
(可以用拨号的方式获得,如在PC局域网内部则无法建立连接),然后该PC运行我们的
SERVER软件,这时就可以在模块端用AT命令与SERVER建立TCP连接(AT+CIPSTART=
"TCP","SERVER的IP地址","SERVER的端口号"),连接成功后会返回CONNECT
OK.然后就可以用AT+CIPSEND发送数据到SERVER,若SERVER有数据,模块自动通过
串口接收.要关闭TCP连接可用AT+CIPCLOSE命令.
2. 如何使用UDP向远端SERVER传输数据
先要注册一个UDP端口(AT+CIPSTART="UDP","SERVER的IP地址","SERVER
的端口号"),成功后返回CONNECT OK.然后用AT+CIPSEND发送UDP包到SERVER,
若SERVER有数据,模块自动接收,从串口送出.
3. 如何发送数据
要发送数据必须先要建立TCP连接或注册一个UDP连接.有3种方式发送数据.可变长
度的数据发送可以用AT+CIPSEND命令,返回">"后输入发送的数据,ctrl+z(0x1a)启动
发送.固定长度的数据发送用AT+CIPSEND=LENGTH命令,返回"> "后输入发送的数据,
当输入的数据长度等于LENGTH的时候自动发送,不需结束符.还有一种自动发送方式,先
用AT+CIPATS=,命令设定自动发送的时间,然后用AT+CIPSEND返回">"
输入要发送的数据,等定时到了之后自动发送输入的数据.发送完成之后返回SEND OK.
此时处于命令态,若有数据发送再重复以上的步骤就可以了.
注意:每次发送的数据长度应小于1024bytes.
4. 如何接收数据
接收数据为自动接收,若有远端数据则自动接收.可以用AT+CIPHEAD=1在接收的数
据前面自动加上标识.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
4
5. 如何使用SIM100TCP的SERVER功能
模块可以配置为TCPSERVER,接收来自远端的TCP数据.具体的操作如下:
AT+CIPCSGP=1,"cmnet"(GPRS方式)
AT+CLPORT="TCP","PORT" (设定侦听的TCP的端口号)
AT+CIPSERVER (启动SERVER功能,成功后返回SERVER OK,这时候已经启动了SERVER
功能,开始侦听PORT)
AT+CIFSR (获得SERVER的IP地址)
或者:
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和密
码皆为172,连接速率为9600)
AT+CLPORT="TCP","PORT"(设定侦听的TCP端口号)
AT+CIPSERVER(启动SERVER功能,成功后返回CONNECT 9600 和 SERVER OK,这时
候已经启动了SERVER功能,开始侦听PORT)
AT+CIFSR (获得SERVER的IP地址)
可以用SMS通知远端模块本SERVER的IP地址和端口号,以便远端可以与之连接,收发
数据.
这时远端的模块就可以与本SERVER建立连接,收发数据了.
如有CLIENT连接到SERVER,SERVER端会显示 REMOTE CLIENT的IP地址和端口号.
这时候SERVER就可以接收来自REMOTE CLIENT的TCP数据包(不含TCP头)了.
注意:目前TCP SERVER不能同时支持多个TCP连接.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
5
6. 如何使用UDP,接收来自远端的数据
可以使用SIM100TCP的UDP功能,接收来自远端的UDP数据.具体过程如下:
AT+CIPCSGP=1,"cmnet"(GPRS方式)
AT+CLPORT="UDP","端口号"(设置UDP端口号)
AT+CSTT (启动TCP任务,成功后返回OK)
AT+CIICR (激活场景,成功后返回OK)
AT+CIFSR (获得本地IP地址)
AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP
连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功
后返回CONNECT OK)
或者
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名
和密码皆为172,连接速率为9600)
AT+CLPORT="UDP","PORT"(设定UDP端口号)
AT+CSTT (启动TCP任务)
AT+CIICR (激活场景,成功后返回CONNECT 9600和OK)
AT+CIFSR (获得本地IP地址)
AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP
连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功
后返回CONNECT OK)
此时就模块就可以接收到远端的UDP包.可以用AT+CIPSRIP=1在收到的UDP包的前面
加上标识和发送方的IP地址和端口号.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
6
7. 如何使用DNS功能
利用SIM100TCP的DNS可直接连接到一个域名,或者可以用DNS解析域名获得IP地址.具体
步骤如下:
直接连接到一个域名
1:先配置DNS
AT+CDNSCFG="211.136.18.171" (以上海为例)
2:选择域名还是IP地址
AT+CDNSORIP=1(选择域名)
3:建立连接
AT+CIPSTART="TCP","www.263.net", "80" (连接到SERVER)
4:发送数据
AT+CIPSEND返回">"后开始发送数据,ctrl+z启动发送.
解析域名获得IP地址
1:先激活一个移动场景
AT+CSTT
AT+CIICR
AT+CIFSR
2:配置DNS
AT+CDNSCFG="211.136.18.171" (以上海为例)
3:解析域名,获得IP地址
AT+CDNSGIP="www.263.net"
返回该域名的IP地址
8. 如何检测是否在线,断线后有什么提示
可以用AT+CIPSTATUS查询TCP所处的状态,具体状态请参考AT命令集,若处于连接
状态则返回CONNECTOK.断线后会主动返回CLOSE信息,同时TCP状态为IP CLOSE.
9. 如何区分接收的数据是AT命令的响应还是来自远端
设定AT+CIPHEAD=1,这样来自SERVER的数据前面就会自动加上一个标志,其格式
为:+IPD(datalength),+IPD为标识,datalength为来自SERVER端数据的长度.这样就可以
区分是来自SERVER的数据还是AT命令的相应.

SIMCOM Application Note for SIM100 TCP/IP AT Commands
7
10. 如何使用SIM100TCP建立点对点的TCP连接,传输数据

用GPRS方式的具体步骤为:

第一台:
AT+CLPORT="TCP","3030"
AT+CIPSERVER (启动SERVER功能,开始侦听3030端口)
AT+CIFSR(获取本地IP地址)
AT+CLPORT="TCP","3000"(设置本地TCP端口)

第二台:
AT+CLPORT="TCP","2020"
AT+CIPSERVER (启动SERVER功能,开始侦听2020端口)
AT+CIFSR(获取本地IP地址)
AT+CLPORT="TCP","2000"(设置本地TCP端口)

第一台:
AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由对方发SMS
得到)
已经建立连接

第二台:
AT+CIPSTART="TCP","REMOTE IP ADDR","3030"
已经建立连接


之后任何一方就可以向另外一方发数据(用AT+CIPSEND发送)





也可以用CSD方式建立,具体操作如下:

第一台:
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和
密码皆为172,连接速率为9600)
AT+CLPORT="TCP","3030"
AT+CIPSERVER (启动SERVER功能,开始侦听3030端口)
AT+CIFSR(获取本地IP地址)
AT+CLPORT="TCP","3000"

第二台:
AT+CIPCSGP=0,"17201","172","172", 2 (CSD方式,置为CSD连接,拨17201,用户名和
密码皆为172,连接速率为9600)
AT+CLPORT="TCP","2020"
AT+CIPSERVER (启动SERVER功能,开始侦听2020端口)
AT+CIFSR(获取本地IP地址)
AT+CLPORT="TCP","2000"
SIMCOM Application Note for SIM100 TCP/IP AT Commands
8

第一台:
AT+CIPSTART="TCP","REMOTE IP ADDR","2020" (REMOTEIP ADDR可由对方发SMS
得到)
已经建立连接

第二台:
AT+CIPSTART="TCP","REMOTE IP ADDR","3030"
已经建立连接


之后任何一方就可以向另外一方发数据(用AT+CIPSEND发送)

SIMCOM Application Note for SIM100 TCP/IP AT Commands
9
11. 如何使用SIM100TCP实现多个模块之间的互相通信
目前SIM100TCP不支持多个TCP同时连接,但是可以用UDP方式来实现.可以用模块启
动UDP功能,这样模快就可以接收来自远端的UDP包,可以通过收到的UDP包获取发送方的
IP地址和端口号,然后本模块就可以作出应答,回应一个UDP包,实现相互的通讯.下面是
一个简单的例子:
假设A,B,C三个模块要相互通信,可以用以下的方式实现(以GPRS方式为例)
1:A,B,C分别初始化如下:
AT+CIPCSGP=1,"cmnet"(GPRS方式)
AT+CLPORT="UDP","端口号"(设置UDP端口号)
AT+CSTT (启动TCP任务,成功后返回OK)
AT+CIICR (激活场景,成功后返回OK)
AT+CIFSR (获得本地IP地址)
AT+CIPSTART="UDP","REMOTE IP ADDR","REMOTE PORT"(注册UDP
连接,其中"REMOTE IP ADDR"和"REMOTE PORT"可以随便设置一个,成功后返回
CONNECT OK)
2:若A要向B发送数据,只要这样就可以了:
AT+CIPCLOSE (注销当前UDP连接)
AT+CIPSTART="UDP","B的IP地址","B的端口号"(注册新的UDP连接)
(成功后会返回CONNECTOK和OK)
AT+CIPSEND (发送数据)
若C有数据发给A,则A自动接收到,同时可以获得C的IP地址和端口号,这样A就可以
发UDP包给C了,具体过程跟上面类似.
SIMCOM Application Note for SIM100 TCP/IP AT Commands
10
12. TCP连接出错后应该如何处理
若在建立TCP连接的过程中出现错误或者SERVER断线,则先用AT+CIPCLOSE关闭
TCP连接(本地IP地址不变),然后再重新建立连接.若其他时候可以用AT+CIPSHUT关闭
PDP Context(本地IP地址会改变),然后重新建立连接.
13. 如何建立一个点对点的CSD连接
首先要确保SIM卡已开通CSD业务,直接呼叫对方号码(数据呼叫,非语音呼叫),对
方用ATA应答,然后会返回CONNECT 9600,这时候双方进入完全的透明数据传输状态,双
方都可以收发数据,发+++后返回命令态(注意+++的前后0.5秒内必须无数据传输才能返回
命令态),ATO可返回数据态.ATH可结束本次CSD连接.


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
unix/linux知识 iis7站长之家
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3