Android活动不是从第二次运行开始

时间:2014-06-16 09:47:32

标签: android android-intent android-activity

我有两项活动。一个是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 onDestroyonStop方法,但它没有奏效。我怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

我发现了自己的错误。我的TCP客户端服务器等待,直到一个字节来自服务器。因此无论取消任务。它等待一个字节读取。我关闭了流onCancelled方法的任务,它的工作原理。