当Android小部件RemoteViewService被销毁时

当Android小部件RemoteViewService被销毁时,android,performance,android-intent,android-widget,Android,Performance,Android Intent,Android Widget,我正在开发包含ListView集合的Widget。我已经创建了RemoteViewService的具体实现,并实现了onGetViewFactory()方法来提供RemoteViewsService.RemoteViewsFactory的具体实现 我使用以下代码将服务设置为RemoteView: Intent intent= new Intent(); intent.setAction("remote_service"); intent.putExtra(AppWidgetManager.EXT

我正在开发包含
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);
我将列表对象保存在
RemoteViewFactory
的具体实现中

查询步骤:

  • 在主屏幕上放置小部件
  • 这将导致创建RemoteViewFactory
  • 将设备置于睡眠模式
  • RemoteViewService立即删除导致RemoteViewFactory 垃圾收集的具体实现,因此
    List
    对象破坏

请建议?

AppWidgetProvider
一样的
RemoteViews服务不会永远存在。您的
RemoteViewsService
在其
onGetViewFactory()
方法中,应该返回您的
RemoteViewsFactory
的新实例。
RemoteViewsFactory
所需的任何数据都需要持久化(例如,
SQLiteDatabase
)并根据需要进行检索。

感谢Commonware确认RemoteViewService可以随时通过操作系统进行销毁。我将更改实现,使数据保持在SQLite数据库中