次のコードを使用してAsyncTask
を作成しています。
public class SaveFileToExternalStorage extends AsyncTask<File, Void, Boolean>{
protected Boolean doInBackground(File... file) {
DalCategories c= new DalCategories();
boolean result = c.saveObject(customlistobject,file[0]);
return result;
}
protected void onProgressUpdate() {
//setProgressPercent(progress[0]);
}
protected void onPostExecute(boolean result) {
//showDialog("Downloaded " + result + " bytes");
}
}
ここで、2つのパラメーターcustomlistobject
とFile
オブジェクトを無効な進行状況とboolean
戻り値の型で渡します。
そのcustomlistobject
をAsyncTask
オブジェクトと一緒にFile
に渡す方法がわかりません。
完全ではありませんが、実用的な解決策は、オブジェクトをパラメーターとして使用することです。
public class SaveFileToExternalStorage extends AsyncTask<Object, Void, Boolean>{
protected Boolean doInBackground(Object... param) {
File file = (File) param[0];
List list = (CustomList) param[1];
return result;
}
protected void onProgressUpdate()
{
//setProgressPercent(progress[0]);
}
protected void onPostExecute(boolean result)
{
//showDialog("Downloaded " + result + " bytes");
}
}
このコードは単なるサンプルです。instanceof
を使用して、インデックス0と1のオブジェクトが実際にファイルまたはCustomListであることを確認する必要があります。
OctavianDamieanも良い方法を書いています...
2つのオブジェクトをパラメーターとして渡す必要がある場合は、独自のホルダーを作成して、ホルダーオブジェクトを送信するだけです。
Fileオブジェクトとともにカスタムオブジェクトを保持するオブジェクトを作成します。状況に応じて、カスタムオブジェクトにFileオブジェクトを保持し、AsyncTask
カスタムオブジェクトを渡すこともできます。
doInBackground
メソッド内では、オブジェクトを抽出するだけなので、必要に応じて処理できます。
1つのオプションは、これらのパラメーターを受け取るAsyncTask
のコンストラクターを持つことです。
_public class SaveFileToExternalStorage extends AsyncTask<File, Void, Boolean>{
List customlistobject;
public SaveFileToExternalStorage(List aList) {
customlistobject = aList;
}
protected Boolean doInBackground(File... file) {
DalCategories c= new DalCategories();
boolean result = c.saveObject(customlistobject,file[0]);
_
もう1つのオプションは、オブジェクトをAsyncTask
の最初のタイプのパラメーターとして渡すことです。
_public class SaveFileToExternalStorage extends AsyncTask<Object, Void, Boolean>{
protected Boolean doInBackground(Object... objs) {
File file = (File) ibjs[1];
List customlistobject = (List) objs[2];
DalCategories c= new DalCategories();
boolean result = c.saveObject(customlistobject,file[0]);
_
doInBackground()
の実際のパラメータは可変引数リストであり、単一のオブジェクトではないため、これは機能します。