getInstanceCount and e.printStackTrace

来源:互联网 发布:知乎 张居正 编辑:程序博客网 时间:2024/05/17 01:42

没有设置android:launchMode="singleInstance"。打开AP,按Back key退出,有时重新打开AP时,getInstanceCount() > 1,这时,退出当前instance后将显示前一次打开的instance,不知道遇到这种情况时,如何将之前的instance显示出来,并且不新建instance。
修改onDestroy()如下,仍然有问题。
@Override
protected void onDestroy()
{         
            try
            {
                finalize(); //decrease sInstanceCount
        }
            catch (Throwable e)
            {
                e.printStackTrace();
        }
           
            super.onDestroy();
            //System.gc();
            mLocalActivityManager.dispatchDestroy(isFinishing());
}

 

增加下面代码,以避免AP启动多个。
重复操作AP进入退出,下面的nInstanceCount有时连续多次都是>1,有时连续一段时间操作很多次都==1,何时出问题不确定!!
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    Bundle states = savedInstanceState != null ? (Bundle) savedInstanceState.getBundle(STATES_KEY) : null;
    mLocalActivityManager.dispatchCreate(states);

    long nInstanceCount = Player.getInstanceCount();
    if(nInstanceCount > 1)
    {
        Log.i("Player", "onCreate--finish()");
        finish();
        return;
    }
    ...
}