处理程序冻结 GUI Android

Handler freezing GUI Android

我在执行异步任务时遇到了一些问题。我想在 activity 中有一个后台任务 运行 一段时间(15 分钟,但出于调试目的,我使用了 10 秒)。

我的代码:

    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?

new Thread(new Runnable() {

                @Override
                public void run() {
                ApplicationData.LoadApplicationData(getApplicationContext());//background thread code
                    runOnUiThread(new Runnable() {
                        public void run() {
                            //the other foreground thread
                        }
                    });
                }

    }).start();