当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数据库中