我有一个AsyncTask在运行,完成任务后onPostExecute执行了它应该做的事情,一切都很好。但是在Eclipse的调试窗口中,任务仍在运行。每次运行任务时,我都会得到一个新任务。所以我猜测它没有重复使用任务。你们有人见过这种情况吗?
它不会重复使用任务。它会一直运行,直到onPostExecute
完成。它可能仍然在您的调试窗口中,因为对象尚未被垃圾回收。不用担心。
package com.mvw.tas;
import java.io.IOException;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class TestAsync extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnD = (Button)findViewById(R.id.Btn01);
btnD.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
new gback().execute( "");
}
});
}
////////////////////////////////////////
public class gback extends AsyncTask<String, Void, IOException> {
//@Override
protected IOException doInBackground(String... params) {
Log.d( "ASTEST", "Running background");
return null;
}
@Override
protected void onPostExecute(IOException result) {
Log.d( "ASTEST", "Post Exec");
}
@Override
protected void onPreExecute() {
Log.d( "ASTEST", "PRE Exec");;
}
}
}
和XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button android:text="Test AysncTask" android:id="@+id/Btn01" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
调试器中列出的任何对象都不会被垃圾回收。这是因为调试器持有对它们的引用,这是正确的行为。