如何在我的应用程序中停止屏幕方向更改重置状态

时间:2012-05-25 13:07:54

标签: android multithreading atomicboolean

当我的线程开始时,我将AtomicBoolean设置为true。 最后,我在关联的Handler中将其重置为false。

当我在线程结束前更改屏幕方向时:

  • onSaveInstanceState()打印出此bool为TRUE
  • onPause()也打印为TRUE。 - >逻辑

线程结束,我再次更改方向:

  • My Log.e“Bool”打印FALSE - >行
  • onSaveInstanceState()打印TRUE - >问题
  • onPause()打印TRUE - >问题
  • onCreate()打印TRUE - >问题

的OnCreate():

if (savedInstanceState != null) {
    boolLocThread.set(savedInstanceState.getBoolean("boolLocThread"));
    Log.i("APP", "load LOC: " + boolLocThread.get());
    if (boolLocThread.get()) {
       Log.i("APP", "show progressDialog again");
       progressDialog = ProgressDialog.show(App.this, "", "Loading...", true);              
    }
}

处理程序:

Handler handlerLoc = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        Log.i("APP", "Handler received (LOC)");
        Log.i("APP", "Suppress progressDialog (LOC)");
        progressDialog.dismiss();
        boolLocThread.set(false);
        Log.e("APP", "Bool: " + String.valueOf(boolLocThread.get()));

    }
};

的onSaveInstanceState:

protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putBoolean("boolLocThread", boolLocThread.get());
    Log.i("APP", "save LOC: " + boolLocThread.get());           
}

在OnStop方法中,我将我的布尔值设置为false,在OnPause方法中,我解除了progressDialog,如果它存在的话。 如果我在结束前没有关闭屏幕,则bool会重置为FALSE,并且没有问题。我怎么能正确重置我的布尔值?感谢

0 个答案:

没有答案