Android 活动恢复时Asynk任务未连接

Android 活动恢复时Asynk任务未连接,android,Android,我有一个任务要连接到服务器。当活动第一次启动时,它工作正常。暂停后恢复活动时,asynk任务将不会执行。我也尝试在onResume中调用execute方法,但没有帮助 public class connectTask extends AsyncTask<String, String, TCPClient> { @Override protected TCPClient doInBackground(String... message) { //we

我有一个任务要连接到服务器。当活动第一次启动时,它工作正常。暂停后恢复活动时,asynk任务将不会执行。我也尝试在onResume中调用execute方法,但没有帮助

public class connectTask extends AsyncTask<String, String, TCPClient> {

    @Override
    protected TCPClient doInBackground(String... message) {

        //we create a TCPClient object and
        mTcpClient = new TCPClient(new TCPClient.OnMessageReceived() {
            @Override
            //here the messageReceived method is implemented
            public void messageReceived(String message) {
                //this method calls the onProgressUpdate
                publishProgress(message);
            }
        });
        mTcpClient.run(SiteNumber);

        return null;
    }

    @Override
    protected void onProgressUpdate(String... values) {
        super.onProgressUpdate(values);

        //in the arrayList we add the messaged received from server
        //sc.showDialog(values[0]);
        if (pressedButton == DOOR) {
            if (values[0].equals(getString(R.string.Door_Opened))) {
                sentSucc();
                pressedButton = INACTVE;
            }
        }  
    }
} 
更新1

我已在oncreate connectTask conn上定义了asynk任务

在onCreate中,我调用conn.execute

我也试着把这个电话转到简历上

提前感谢

将此代码放入您的活动中 此代码用于检查异步任务状态 如果Asynctask在Pause上执行时正在运行,它将取消Asynctask的执行。 &在OnResume方法中,再次执行Asyctask

connectTask mTask;

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();

 if (mTask != null && mTask.getStatus() != AsyncTask.Status.FINISHED)
 {
    mTask.cancel(true);
  }  


}  
编辑:

您应该在onResume方法中执行异步任务;因为它将被调用两次,一次是在开始活动时,另一次是在暂停后恢复活动时

它应该是这样的:

@Override
public void onResume(){
    // ...
    new connectTask ().execute();
}

注意我们匿名执行它的方式,我们在构造函数中使用new关键字,因为我们需要创建一个异步任务对象来执行它。

您应该在onResume方法中调用asynctask。因为此方法将在创建活动时在onCreate之后调用,并且在从另一个活动恢复活动时调用

您应该像下面这样调用asynctask

@Override
public void onResume()
{
    new connectTask ().execute();
}

希望它能对您有所帮助。

请显示您在主活动中调用此AsyncTask的位置。您是否在onresume中创建AsyncTask的新对象?发布您的活动代码
@Override
public void onResume()
{
    new connectTask ().execute();
}