doInBackground() が関数 fn1 を呼び出し、次に別の fn2 を呼び出す単純な AsyncTask があります。その結果、「アクティビティがウィンドウにリークしました」というクラッシュが発生します。doInBackground() から直接 fn2 を呼び出すと、すべて正常に動作します。それは、スレッドでは複数のレベルの fn 呼び出しを行うことができないということですか?(スレッド-> 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";
}