![](/img/trans.png)
[英]How to cancel alarm manager alarms when user removes the app from recent apps list?
[英]Why Alarm not fired when I remove app from recent apps?
我可以看到许多可以处理更复杂情况(例如通知)的应用程序,并且运行良好。
需求:
我只是想设置一个在特定时间触发的警报
问题:
仅当应用程序存在于最近的应用程序中时,它才有效;如果我将其从最近的应用程序中删除,则不会发出警报!
问题:
为什么不起作用? -我应该怎么做才能使其正常工作?
我的代码片段:
我的警报触发效果如下:
Intent intent = new Intent(this, MyBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), PENDING_INTENT_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
assert alarmManager != null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, timeInMilliseconds, pendingIntent);
} else {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, timeInMilliseconds, pendingIntent);
}
MyBroadcastReceiver是什么样的:
public class MyBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "MyBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "BroadCast Fired!");
}
启用引导:
ComponentName componentName = new ComponentName(this, MyBroadcastReceiver.class);
PackageManager packageManager = getPackageManager();
packageManager.setComponentEnabledSetting(componentName,
componentEnabledState,
PackageManager.DONT_KILL_APP);
表现:
<receiver
android:name="MyBroadcastReceiver"
android:enabled="false">
<intent-filter>
<action
android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
发生这种情况的原因是,设备制造商(Oppo)添加了自定义设置,以在将应用程序从最新应用程序列表中删除时将其杀死。
这不是标准的Android行为。 在正常的Android中,将应用程序从最新应用程序列表中删除后,该应用程序不会被杀死(这就是为什么它可以在模拟器上正常工作的原因)。
解决方案是找到此设置在设备中的位置并进行更改。 在某些设备中,您可能还需要将应用程序固定到最新应用程序列表中,因此不会将其删除。 但这可能会根据特定的设备型号而改变。
如果找不到设置,建议您在Oppo论坛中搜索或检查以下页面: https : //dontkillmyapp.com/
但是您的代码是正确的。 该应用程序无能为力。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.