私が言ったように、これは AsyncTask の正しい使い方ですか?
つまり、パラメーターを使用せずに にアクティビティ コンテキストを渡し、返された値onPreExecute()
の結果を取得するのではなくdoInBackground()
、 が呼び出されるとマネージャー自体を取得しonPostExecute()
ます。
そしてもう1つ、Asynctask APIリファレンスにonPostExecute()
は、「タスクがキャンセルされた場合、このメソッドは呼び出されません」と書かれています。、メソッドの実行中に SomeException が発生した場合はどうなりますか? doInBackground()
¿onPostExecuted()
public class MainClass {
...
//Somewhere in the class, the task is called:
new MyAsyncTask.execute();
...
private class MyAsyncTask extends AsyncTask <Void,Void,Void> {
private MyManager manager;
protected void onPreExecute(){
super.onPreExecute();
//We initialice the members here, passing the context like this:
manager = new Manager(MainClass.this);
manager.initializeMembers();
}
protected void doInBackgroud(Void ...params){
try{
//here we use the long operation task that is inside the manager:
manager.startLongTask();
} catch (SomeException e){
doWhatEverItIsWith(e);
}
return null;
}
protected void onPostExecute (Void result){
super.onPostExecute(result);
//Here we get the result from the manager
handleTheResultFromHere(manager.getResult());
}
}
}
ありがとうございました。