Java AsyncTask状态未声明为已完成
问题是: AsyncTask状态未声明为“已完成”,但在doInBackground中执行代码后仍保持运行。启动此任务后,应用程序运行缓慢,时间非常长 我需要完成。我做错了什么 谢谢 代码缩写:Java AsyncTask状态未声明为已完成,java,android,mobile,Java,Android,Mobile,问题是: AsyncTask状态未声明为“已完成”,但在doInBackground中执行代码后仍保持运行。启动此任务后,应用程序运行缓慢,时间非常长 我需要完成。我做错了什么 谢谢 代码缩写: MyTask mt; class MyTask extends AsyncTask<Void, Void, Void> { int myProgressCount; @Override protected void o
MyTask mt;
class MyTask extends AsyncTask<Void, Void, Void> {
int myProgressCount;
@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(DeviceUARTContext, "onPreExecute Start Progress Bar", Toast.LENGTH_LONG).show();
}
@Override
protected Void doInBackground(Void... params) {
// the code of a task
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
Toast.makeText(DeviceUARTContext, "onPostExecute End Progress Bar",
Toast.LENGTH_LONG).show();
Toast.makeText(DeviceUARTContext, "asynctask status: "+mt.getStatus(), Toast.LENGTH_LONG).show();
// here mt.getStatus() should be "Finished"
}
}
ReadDataBut = (Button) view.findViewById(R.id.button12);
ReadDataBut.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mt = new MyTask();
mt.execute();
}
});
如果您的toast asynctask status:正在显示,则意味着您已经处于onPostExecute状态,即您的doInBackground方法已完成,并且将在显示此toast后,即onPostExecute方法完成执行时完成
请参阅此链接:
在onPostExecuted完成后,它会清楚地表明它的执行状态已更改,并且在它完成之前,您正在以相同的方法显示toast,因此RUNNING返回为onPostExecuted尚未完成。但是mt.getStatus正在运行-这意味着任务尚未执行。不!任务保持运行您正在询问为什么代码保持运行,但您没有显示代码。。。
protected void onPostExecute(Void result) {
super.onPostExecute(result);
Toast.makeText(DeviceUARTContext, "onPostExecute End Progress Bar",
Toast.LENGTH_LONG).show();
Toast.makeText(DeviceUARTContext, "asynctask status: "+mt.getStatus(), Toast.LENGTH_LONG).show();
// здесь mt.getStatus() должно быть "Finished"
}