我正在构建一个AppWidget,我希望通过允许用户从中央存储库下载皮肤来进行换肤。
我正在将构成皮肤的png复制到widget的私有目录中。我正在从这个目录加载位图并制作我存储在静态HashMap中的Bitmaps,以避免每次都加载它们。
我意识到这不会起作用,因为HashMap在某些时候是垃圾收集的(通常是几个小时后)。我意识到每次都可以从磁盘加载位图,但这很可能会很慢并耗尽电池。
有没有更好的缓存此类数据的方法?
答案 0 :(得分:0)
从查看Google标准“电源控制”窗口小部件的源代码
我发现我需要在DONT_KILL_APP
onEnabled
@Override
public void onEnabled(Context context) {
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(
new ComponentName("com.android.settings", ".widget.SettingsAppWidgetProvider"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
并在onDisabled
中再次取消设置@Override
public void onDisabled(Context context) {
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(
new ComponentName("com.android.settings", ".widget.SettingsAppWidgetProvider"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
这似乎适合我,设置保留了一夜之间(以前没有)。