繁体   English   中英

当我从最近的应用程序中删除应用程序时,为什么没有触发警报?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM