0
Android 2.2エミュレータで動作するEclipse + SDK 8を使用してAndroidアプリを作成しています。AndroidアプリがVMをスローアウトAsyncTask内で打ち切る
長いタスクをバックグラウンドで処理するAsyncTaskを作成します。現在の活動であろう力がアクティビティを起動ツールに戻って閉じて、mListは(1000+アイテム)大きい場合:
public class taskSavingFavourite extends AsyncTask<Void, Void, Integer>
{
@Override
protected Integer doInBackground(Void... arg0)
{
List<MainListClass> mList = new ArrayList<MainListClass>();
String s = null;
int addedCount= 0;
if (mainListSubTabSelectedTab == 0) mList = buildingList;
else mList = storeList;
if (mList == null) return 0;
try
{
for (int i = 0; i < mList.size(); i ++)
{
if (mList.get(i).checked == 1)
{
s = htFavourite.get(mList.get(i).id+"-"+mList.get(i).type);
if (s == null)
{
addedCount ++;
if (!favouriteList.equals(""))
favouriteList = favouriteList + ";";
favouriteList = favouriteList +
mList.get(i).id + "-" + mList.get(i).type + ":" +
mList.get(i).name;
htFavourite.put(mList.get(i).id + "-" + mList.get(i).type,
mList.get(i).name);
mList.get(i).favourite = 1;
}
}
publishProgress();
}
if (addedCount != 0)
{
SharedPreferences settings = getSharedPreferences("MGS_PRIVATE_DATA", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("favouriteList", favouriteList);
//Commit the edits!
editor.commit();
}
}
catch (Exception e) {};
return addedCount;
}
}
問題がある:以下のコードです。私は迷惑な "残念ながら..."ダイアログが出てこないので、クラッシュしていないことを確認しています。
私はlogcatをチェックし、それが起こるとき、それは常にこのメッセージを持っている:
12-10 14:10:28.772: D/dalvikvm(976): threadid=9: sending two SIGSTKFLTs to threadid=2 (tid=977) to cause debuggerd dump
12-10 14:10:30.842: D/dalvikvm(976): Sent, pausing to let debuggerd run
12-10 14:10:38.903: D/dalvikvm(976): Continuing 12-10 14:10:38.903: E/dalvikvm(976): **VM aborting***
は、私は、これはアンドロイドのバグであるか、私は何かを逃していますかどうかを確認していません。