我有一个简单的 AsyncTask,它的 doInBackground() 调用了一个函数 fn1,而 fn1 又简单地调用了另一个 fn2。结果是“活动已泄漏窗口”崩溃!当我直接从 doInBackground() 调用 fn2 时,一切正常。这是否意味着在一个线程中不能有超过 1 级的 fn 调用?( Thread-> fn1->fn2)
我是 Java 和 android 的新手,所以如果这是一个基本问题,请多多包涵!谢谢。
我的代码算法是这样的:
我的活动:
MyLibrary myLib;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myXML);
myLib = new MyLibrary(MyActivity.this);
new myTask().execute();
}
private class myTask extends AsyncTask<Void, Void, Void>
{
@Override
protected void onPreExecute() {
progressDialog = ProgressDialog.show(MyActivity.this, "", "Fetching Data...");
}
@Override
protected Void doInBackground(Void... params) {
myLib.fn1();
return null;
}
@Override
protected void onPostExecute(Void result) {
progressDialog.dismiss();
}
}
我的图书馆 :
Context ctx;
String iVar;
public MyLibrary(Context context){
this.ctx = context;
}
public void fn1()
{
fn2();
Log.d("TAG", "Function 1";
}
public void fn2()
{
iVar = "100";
Log.d("TAG", "Function 2";
}