基本的に、ファイルをダウンロードするためのAsynctaskが1つあります。これはメインのUIアクティビティからは問題なく呼び出すことができますが、別のアクティビティから呼び出す場合はどうなりますか?つまり、1つのアクティビティは、マニュアルをダウンロードするためのリンクを含むメインメニューであり、別のアクティビティは、使用可能なすべてのドキュメントのListViewです。ダウンロードする。
このために別の非同期タスクを作成する必要がありますか?
基本的に、ファイルをダウンロードするためのAsynctaskが1つあります。これはメインのUIアクティビティからは問題なく呼び出すことができますが、別のアクティビティから呼び出す場合はどうなりますか?つまり、1つのアクティビティは、マニュアルをダウンロードするためのリンクを含むメインメニューであり、別のアクティビティは、使用可能なすべてのドキュメントのListViewです。ダウンロードする。
このために別の非同期タスクを作成する必要がありますか?
MainActivity に AsyncTask をインナークラスとして持っていると思います。AsyncTask のコードを取得して、両方のクラスにパブリック (またはアクセス可能) な新しいファイルに配置できます。AsyncTaskのインスタンスを複数回実行することはできませんが、AsyncTask の複数のインスタンスを作成できることに注意してください。
class MainActivity{
new MyTask().execute();
}
.
class DifferentActivity {
new MyTask().execute();//a new instance
}
.
class MyTask extends AsyncTask{
public MyTask(Context context){
}//Pass in context.
}
すべての異なるファイル。
Asynctasks は、通常実行中のアクティビティである UI スレッドから呼び出す必要があります。
これらのアクティビティはインテントを通じて開始され、独自の UI を表示するように聞こえるので、それらから Asynctasks を実行できます。
唯一の規定は、すべてのアクティビティが参照できる場所で asynctask を宣言/定義する必要があることです (したがって、com.myapp.MyMainMenuActivity などのアクティビティも含む非同期タスク com.myapp.MyAsyncTask を拡張するクラスを作成することもできます)。