当 Android 小部件 RemoteViewService 被销毁时
Posted
技术标签:
【中文标题】当 Android 小部件 RemoteViewService 被销毁时【英文标题】:When Android widget RemoteViewService gets destroyed 【发布时间】:2015-10-23 01:58:29 【问题描述】:我正在处理包含ListView
作为集合的Widget
。我创建了RemoteViewService
的具体实现并实现onGetViewFactory()
方法以提供RemoteViewsService.RemoteViewsFactory
具体实现。
我使用以下代码将服务设置为RemoteView
:
Intent intent= new Intent();
intent.setAction("remote_service");
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
intent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
remoteViews.setRemoteAdapter(R.id.widget_list, intent);
我将 List 对象保存在 RemoteViewFactory
的具体实现中。
查询步骤:
在主屏幕上放置了小部件。 这会导致创建 RemoteViewFactory。 将设备置于睡眠模式。 现在将 RemoteViewService 破坏导致 RemoteViewFactory 垃圾收集的具体实现,因此List<String>
对象销毁。
请推荐?
【问题讨论】:
【参考方案1】:RemoteViewsService
和 AppWidgetProvider
一样,不会永远存在。您的RemoteViewsService
在其onGetViewFactory()
方法中应该返回您的RemoteViewsFactory
的一个新实例。 RemoteViewsFactory
所需的任何数据都需要持久化(例如,SQLiteDatabase
)并根据需要进行检索。
【讨论】:
感谢 CommonsWare 确认 RemoteViewService 可以随时被操作系统破坏。我将更改实现以将数据持久保存在 SQLite 数据库中以上是关于当 Android 小部件 RemoteViewService 被销毁时的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Android 中的 RemoteViews 中删除小部件?
《android开发艺术探索》读书笔记--RemoteViews
小部件更新的 RemoteViews 超出最大位图内存使用错误