【问题标题】:onSaveInstanceState and onRestoreInstanceState [duplicate]onSaveInstanceState 和 onRestoreInstanceState [重复]
【发布时间】:2015-06-30 23:55:29
【问题描述】:

无法弄清楚为什么 onSaveInstanceState 和 onRestoreInstanceState 在我分别单击主页按钮和恢复应用程序时没有输出我的 Logcat 消息。

public class MainActivity extends ActionBarActivity {

    int count = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onResume() {
        super.onResume();
        count++;
    }

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
        Log.d("TAG", count + " was restored");

    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        count = savedInstanceState.getInt("count");
        Log.d("TAG", count + " was restored");
    }
}

【问题讨论】:

    标签: android logcat android-logcat


    【解决方案1】:

    onSaveInstanceState()onRestoreInstanceState() 在 Activity 生命周期的特定时间被调用。

    如您所见,要调用onSaveInstanceState(),该活动需要被操作系统销毁。按 Home 键只会调用onPause() 方法。

    要调试onSaveInstanceState() 方法,请在Android 设备上进入Settings -> Developer options,然后在Apps 部分中,选中Kill app back button 旁边的框。现在,长按后退按钮应该会终止可见的应用程序并通过敬酒通知您。再次打开应用会调用onRestoreInstanceState()

    如果您的设备上没有此选项,或者您使用的是模拟器,请按照此处有关如何立即销毁活动的说明进行操作以测试 onSaveInstanceState()onRestoreInstanceState()http://developer.android.com/tools/debugging/debugging-devtools.html

    【讨论】:

      【解决方案2】:

      单击主页按钮不足以杀死应用程序。这只是暂停它。 onSave/onRestore 仅在框架要终止活动并稍后恢复它时调用。只是最小化它并不能做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-05
        • 1970-01-01
        • 2012-10-01
        • 2014-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-19
        相关资源
        最近更新 更多