Android AppWidget:如何在更新之间保留静态对象?

Android AppWidget:如何在更新之间保留静态对象?,android,android-widget,Android,Android Widget,我正在创建一个AppWidget,它由一个ImageView组成,其中填充了一个自定义渲染位图。此小部件每分钟刷新一次(使用AlarmManager) 所有渲染和存储都在AppWidgetProvider中完成 作为一个好公民,我希望尽可能减少CPU使用等,因此我将我的Paint对象和其他预先计算的值存储在AppWidgetProvider的静态字段中 然而,当我的AppWidget程序和那些酷酷的孩子们无所事事时,它却非常渴望死在我身上。我知道这是标准行为。然而,随着它悲惨的死亡,它也把我珍贵

我正在创建一个
AppWidget
,它由一个
ImageView
组成,其中填充了一个自定义渲染位图。此小部件每分钟刷新一次(使用
AlarmManager

所有渲染和存储都在
AppWidgetProvider
中完成

作为一个好公民,我希望尽可能减少CPU使用等,因此我将我的
Paint
对象和其他预先计算的值存储在
AppWidgetProvider
的静态字段中

然而,当我的
AppWidget
程序和那些酷酷的孩子们无所事事时,它却非常渴望死在我身上。我知道这是标准行为。然而,随着它悲惨的死亡,它也把我珍贵的静态存储的物品带进坟墓,再也看不见了,这就不那么方便了


我的哀悼并不能解决任何问题,所以我想知道:有没有办法解决这个问题?或者根本没有办法做到这一点,我是否应该在每次重新绘制时重新初始化所有内容?

我不确定您正在进行什么样的预计算,或者正在保存什么样的数据,但Android会告诉您何时将要杀死您的AppWidget。你可以利用这个机会来进行某种持久存储。在序列化/反序列化数据时,您仍然需要一些处理,但它可能比重新计算更快。

这不是一个真正的解决方案,但我通过不缓存所有内容来解决它。

我正在做类似的事情——创建一个时钟小部件——并且发现它比您想象的还要糟糕。Android并不仅仅是在AppWidgetProvider厌倦了它的存在时就把它杀掉。它会立即终止它,并在每次更新时重新创建它(如构造函数中的print语句所示)

这是一个问题,如果你,像我一样,正在做一些内存密集型的事情,如绘制一个相当重的对象到一个相当重的屏幕外位图


我能为您提供的最佳解决方案是尝试以更持久的方式处理对象的维护和存储,例如,配置活动,或者服务。不过,对于绘制对象来说似乎有些过分。

您不应该每分钟更新一个小部件,如果您有一个非常定制的时钟显示小部件,您应该这样做。我正在初始化一些int[]数组和一些绘制对象。当我序列化/反序列化东西时,速度肯定不会更快。它需要保存在内存中。