我有两项活动。一个是LoginScreen
,另一个是MainScreen
。登录后我启动了MainScreen。主屏幕在onCreate
方法中运行异步tcp客户端。然后我按下后退按钮进入LoginScreen。然后我再次登录,但它说TCPClient为空。我在活动onCreate时得到一个新的TCPClient实例,但它是null。这是我的代码。
//Main activity codes.
TCPClient mTcpClient;
protected void onCreate(Bundle savedInstanceState) {
try {
cnnTask = new connectTask();
cnnTask.execute("");
} catch (Exception e) {
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_screen);
}
public class connectTask extends AsyncTask<String, String, TCPClient> {
protected TCPClient doInBackground(String... message) {
//we create a TCPClient object
mTcpClient = new TCPClient(new TCPClient.OnMessageReceived() {
@Override
//here the messageReceived method is implemented
public void messageReceived(String message) {
//this method calls the onProgressUpdate
srvrMessage = message;
}
});
mTcpClient.run();
return null;
}
}
}
//LoginScreen code onClick.
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.btnLogin:
intent = new Intent(LoginScreen.this,MainScreen.class);
startActivity(intent);
break;
}
}
正如我之前提到的,首次登录程序正在运行。但是,当我返回到LoginScreen并尝试再次登录时,新的mTcpClient为null。
我试图停止使用MainScreen活动的mpTcpClient onDestroy
和onStop
方法,但它没有奏效。我怎么解决这个问题?
答案 0 :(得分:0)
我发现了自己的错误。我的TCP客户端服务器等待,直到一个字节来自服务器。因此无论取消任务。它等待一个字节读取。我关闭了流onCancelled
方法的任务,它的工作原理。