Android检测清除数据以清除小部件

时间:2014-09-16 16:21:27

标签: android android-widget android-preferences

当用户清除应用程序的数据时,有没有什么方法可以通过广播了解实时"

我有一个小部件显示一些用户详细信息,这些小部件存储在首选项中,但是当用户清除应用程序数据时,我无法知道它直到下一次刷新/更新(onUpdate()调用),这是每30分钟一次。

在此期间,窗口小部件显示无用的值。所以我需要以某种方式触发任何广播以从接收器捕获它并在发生这种情况时更新小部件。

这可能吗?

3 个答案:

答案 0 :(得分:3)

看起来无法获得该事件。应用程序的流程应在清除数据后终止。 https://stackoverflow.com/a/10701338/450243

答案 1 :(得分:2)

您可以使用实施http://developer.android.com/reference/java/util/prefs/PreferenceChangeListener.html的服务来监控您的偏好更改时间。

即使该服务被系统杀死,如果您使用START_STICKY,它也会生效,并且您将能够确定您的密钥是否可用或已被删除。我在几个应用程序中使用了这种方法,它就像一个魅力。

如果您想提高效率,可以为屏幕开启/关闭添加接收器,这样您就可以在屏幕启动时启动服务,并在屏幕启动时终止服务。

希望它有所帮助。

答案 2 :(得分:1)

你也可以看一下这个解决方案,你不会得到一个回调,但在清除数据之前你将有机会更新你的小部件

android:manageSpaceActivity=".path.to.MyActivity"

这将取代按钮"清除数据"从设置到"管理空间"。现在,您可以将用户重定向到由您控制的自定义活动。

活动的发布将作为回调。在您的活动中处理您的数据并使用以下代码

private void clearPreferences() {
    try {
        // clearing app data
        Runtime runtime = Runtime.getRuntime();
        runtime.exec("pm clear YOUR_APP_PACKAGE_GOES HERE");

    } catch (Exception e) {
        e.printStackTrace();
     }
   }

清除应用数据。