0
在我的應用程序有多個地方的AsyncTask可以調用連接到網絡,下載的東西,等它可以從活動或後臺服務。同步處理資料任務的Android
有各種問題,因爲我在讀取和寫入SQLite數據庫並在多個任務上的類似操作重疊(假設GetMail在後臺運行,用戶手動啓動它)。
我想syncronize類型的這一任務,並寫了這樣的代碼。我不知道如何測試它,它似乎是正常運行,但我希望得到你的意見,如果它是有效的。這裏
public enum AsyncTasks
{
GetMail,
PostMail,
}
public class MyApplication extends Application
{
private final ArrayList<AsyncTasks> mLockedAsyncTasks = new ArrayList<AsyncTasks>();
public boolean lockAsyncTask(AsyncTasks task)
{
synchronized (mLockedAsyncTasks)
{
if (!mLockedAsyncTasks.contains(task))
{
mLockedAsyncTasks.add(task);
return true;
}
return false;
}
}
public void unlockAsyncTask(AsyncTasks task)
{
synchronized (mLockedAsyncTasks)
{
if (mLockedAsyncTasks.contains(task))
{
mLockedAsyncTasks.remove(task);
}
}
}
}
的想法是,我打電話lockAsyncTask
如果成功 - 我開始與HTTP的東西,否則跳過,因爲它已經運行。