Android小部件的生命周期

10
在我的widget类中,该类是AppWidgetProvider的扩展,我有一些包含数据的静态final ArrayLists。我在Widget中有一些按钮,当按下时会导致onReceive在类内被调用。我注意到有时候当onReceive被运行时ArrayLists会失去它们的值(为空),但大部分时间它们都有预期的数据。
在这种情况下,ArrayList是否安全使用?是否有任何小部件生命周期事件会导致列表重新实例化?我发现很难找到关于小部件生命周期事件的任何文档。
1个回答

13

在这种情况下,ArrayList是否安全可靠?

不是的。如果你的应用程序没有其他任何运行内容,在onUpdate()调用之间,进程可能会被终止。

有哪些小部件生命周期事件会导致列表重新实例化?

如果进程被终止。

我发现很难找到关于小部件生命周期事件的文档。

那是因为没有像你想象中那样的生命周期。

AppWidgetProvider是一个在清单文件中注册的BroadcastReceiver。在它的onReceive()方法调用结束后,注册的BroadcastReceiver也就消失了。任何位于该范围之外的东西,例如静态数据成员,都将不可靠。

请在文件或数据库中存储信息。


3
如果我的进程被系统终止,然后重新启动 - 在进程重新启动后,它会再次调用onUpdate()函数吗? - user1492955

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接