【问题标题】:When Android widget RemoteViewService gets destroyed当 Android 小部件 RemoteViewService 被销毁时
【发布时间】: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> 对象销毁。

请推荐?

【问题讨论】:

    标签: android performance android-intent android-widget


    【解决方案1】:

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

    【讨论】:

    • 感谢 CommonsWare 确认 RemoteViewService 可以随时被操作系统破坏。我将更改实现以将数据持久保存在 SQLite 数据库中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2011-02-23
    • 2013-05-26
    • 2017-05-01
    相关资源
    最近更新 更多