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