【发布时间】:2016-12-31 22:04:01
【问题描述】:
每当应用程序失去焦点时(无论是手动点击菜单按钮,还是进入空闲状态),都会发送一个 APP_CMD_SAVE_STATE 命令。
在 Android API 文档中显示的本机活动 (https://developer.android.com/reference/android/app/NativeActivity.html) 示例中,当发送此特定命令时,它们会在其 android_app 中保存某种“状态”。
// (...)
switch (cmd) {
case APP_CMD_SAVE_STATE:
// The system has asked us to save our current state. Do so.
engine->app->savedState = malloc(sizeof(struct saved_state));
*((struct saved_state*)engine->app->savedState) = engine->state;
engine->app->savedStateSize = sizeof(struct saved_state);
break;
// (...)
如果您查看他们的代码,savedState 只是一个保存值的结构。首先,我认为每当我们失去焦点时,我们都需要保存对我们的应用程序重要的每一个值,否则这些值会全部损坏或类似的东西(是的,可怕!)
我通过删除上面的代码 sn-p 运行了一个简单的测试,幸运的是没有任何变化,我的结构的值在重新获得焦点后保持不变,即使没有保存它们。
所以我想知道这个命令的目的是什么?这是需要考虑的重要事项吗?
【问题讨论】:
标签: android android-activity android-ndk