我的问题是,只要我将应用程序部署到设备,就会清除与我的应用程序相关的所有警报。
我认为这是因为重新启动应用程序时会清除所有运行时数据,因为广播操作文档中的这一行:ACTION_PACKAGE_RESTARTED
" ...应删除与其关联的所有运行时状态(进程,警报,通知等)..."
首先,当我部署新版本时,android.intent.action.PACKAGE_REPLACED
会因为它被触发而拯救我,但在调试相同版本时会触发。
如何检查我的所有"所有运行时状态是否与我的应用相关联#34;已被删除?
基本上我需要ACTION_PACKAGE_RESTARTED事件,我无法进入自己的应用程序。 或者ACTION_MY_PACKAGE_REPLACED事件,自上次构建以来打包的hassnt发生变化时不会被触发。
答案 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");
}
...
}