我是否需要恢复onResume上的所有变量?

use*_*184 11 variables android

我的经验很糟糕,static class variables因为当课程卸载时他们的价值观会丢失.因此,我完全避免它们.

现在我(甚至过度)担心"正常"变量.

我不确定他们的价值是否也会在某些情况下丢失,例如电话中断,内存不足或其他任何情况.

我可以依靠变量保持其值100%吗?要么

我是否确保对所有活动变量进行某种有效的恢复?

谢谢!

Com*_*are 20

我对静态类变量有不好的经验,因为当类卸载时它们的值会丢失.

类不会"卸载".当Android需要回收内存时,您的进程将在前景中没有任何内容后终止.

我可以依靠变量保持其值100%吗?或者我确保对所有活动变量进行某种有效的恢复?

通过呼叫将活动从前台移出的时间通知活动onPause().从该活动的角度来看,在onPause()直到(可能)相应的任何时间之后onResume(),该过程可以终止并且活动丢失.

您需要坐下来思考您的数据模型.假设用户离开您的应用程序(例如,按HOME)并且不会返回您的应用程序一小时,或一天或一个月.用户合理期望在该段时间内保留的任何数据都需要保存在持久数据存储中,例如数据库或平面文件.您的工作是确定何时保存数据 - 可能是用户按下"保存"按钮,或者可能是在onPause()某个活动中,或者可能是在某个其他时间.

与屏幕的当前内容相关联但不需要保存一个月的数据可以保存在via上onSaveInstanceState().希望您已经使用它来处理屏幕旋转.如果是这样,如果用户离开你的活动,但通过他们可能通过BACK按钮导航回到它的方式(例如,一个电话进来,然后一条短信进来,然后他们点击一个链接上文本消息并打开Web浏览器,然后一直返回到您的应用程序,在此期间已终止),您的已保存实例状态将被恢复.

如果用户离开应用程序,如果Android选择终止您的进程,则其他所有内容 - 活动的实例数据成员或静态数据成员或其他任何内容可能会丢失.因此,静态数据成员通常仅用于短期高速缓存或用于在用户按下HOME或接听电话或其他任何内容时丢失的情况.