我有同时实现异步任务的一些问题。我想在特定的时间内的活动运行的后台任务(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