如何检查Android应用程序是否已删除“与app关联的所有运行时状态”?

时间:2015-04-04 14:37:17

标签: android alarmmanager

我的问题是,只要我将应用程序部署到设备,就会清除与我的应用程序相关的所有警报。

我认为这是因为重新启动应用程序时会清除所有运行时数据,因为广播操作文档中的这一行:ACTION_PACKAGE_RESTARTED
" ...应删除与其关联的所有运行时状态(进程,警报,通知等)..."

首先,当我部署新版本时,android.intent.action.PACKAGE_REPLACED会因为它被触发而拯救我,但在调试相同版本时会触发

如何检查我的所有"所有运行时状态是否与我的应用相关联#34;已被删除?

基本上我需要ACTION_PACKAGE_RESTARTED事件,我无法进入自己的应用程序。 或者ACTION_MY_PACKAGE_REPLACED事件,自上次构建以来打包的hassnt发生变化时不会被触发。

1 个答案:

答案 0 :(得分:0)

我的临时解决方案

由于此问题仅在调试时发生,因此我使用了对sourceSets的gradles支持

<强>的build.gradle:

sourceSets {
        debug {
            res.srcDirs = ['src/debug/res']
        }
        release {
            res.srcDirs = ['src/release/res']
        }
    }

每个sourceSet在res/values/中都有一个configuration.xml文件,其中包含一个布尔值release_build

<强> RES /值/ config.xml中

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="release_build">true</bool>
</resources>

在我的MainActivity的onCreate中,如果release_build为false并且USB已连接,我的行为就像数据已被清除一样:

MainActivity.java

@Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        // Execute startup command if debugging
        if (!getResources().getBoolean(R.bool.release_build)) {
            Intent intent = registerReceiver(null, new IntentFilter("android.hardware.usb.action.USB_STATE"));
            executeStartUpAppCommand = intent.getExtras().getBoolean("connected");
        }
        ...
    }