我有一个简单的本机应用程序用于调试,
只显示一个慢慢改变颜色的三角形。
现在,当我按下主页按钮并将我的应用程序置于背景中时
然后重新启动它,它完全重新启动。
我怎样才能恢复原状?
我已尝试在native-app-example
中执行此操作:
app->userdata = &my_state;
if (app->savedState != NULL)
my_state = *(State*)app->savedState;
并在handle_cmd
中:
case APP_CMD_SAVE_STATE:
app->savedState = malloc(sizeof(State));
*((State*)app->savedState) = my_state;
app->savedStateSize = sizeof(State);
break;
其中State
是我要保存的所有内容的类
我怎么能这样做?
答案 0 :(得分:0)
没必要成为一个班级。它可以是一个结构(实际上是“相同的”)。您必须拥有恢复该结构或类中应用程序状态所需的所有值,并从该位置读取。
阅读一些示例,您会发现将引擎置于app userData中是正常的,如:
app->userData = &engine;
并在该引擎中,从State获取结构。从这个方面来说,你可以只保存你需要的东西,然后留下另一个。
重要的是始终使用该保存状态的值(如三角形的颜色),并使用您编写的代码进行恢复。
PD:对于更复杂的事情,当你使用动态内存时,你必须更加微妙地保存数据。