我有同時實現異步任務的一些問題。我想在特定的時間內的活動運行的後臺任務(15分鐘,但爲了調試的目的,我使用10秒)。處理程序凍結GUI的Android
我的代碼:
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
try {
ApplicationData.LoadApplicationData(getApplicationContext()); //Like SystemClock.sleep(2000)
}
catch (Exception e)
{
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();
}
try{
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.fragmentcontent);
if(currentFragment != null) {
FragmentTransaction fragTransaction = getSupportFragmentManager().beginTransaction();
fragTransaction.detach(currentFragment);
fragTransaction.attach(currentFragment);
fragTransaction.commit();
Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
}
}
catch (Exception e) {
}
finally{
handler.postDelayed(this, 10000); //900000
}
}
},10000);
此代碼凍結2-4秒鐘可以應用。 ApplicationData.LoadApplicationData從服務器加載數據並花費時間。在我的第一次嘗試中,我創建了一個線程,以便這個工作異步完成,但之後我無法更新我的片段。
我怎麼能更新背景資料,一旦完成更新GUI?
使用的AsyncTask從服務器加載... – Opiatefuchs
也許你應該考慮使用後臺服務或多線程 – PeMaCN
ApplicationData.LoadApplicationData是可調用的列表,以使它異步運行,但我需要等待他們完成。只有在他們全部完成後,我才能更新GUI。 – Exprove