Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Oreo:应用程序未运行时不会触发警报_Android_Android Alarms_Android 8.0 Oreo - Fatal编程技术网

Android Oreo:应用程序未运行时不会触发警报

Android Oreo:应用程序未运行时不会触发警报,android,android-alarms,android-8.0-oreo,Android,Android Alarms,Android 8.0 Oreo,我有一个相对简单的设置,可以在一天中的特定时间触发警报并向用户显示通知。这是相关代码 设置报警 long inTime = /*expirationTime*/ Calendar.getInstance().getTimeInMillis() + 10000; Intent startIntent = new Intent("parking.event"); startIntent.setClass(getBaseContext(), ParkingExpirationWarmingBro

我有一个相对简单的设置,可以在一天中的特定时间触发警报并向用户显示通知。这是相关代码

设置报警

 long inTime = /*expirationTime*/ Calendar.getInstance().getTimeInMillis() + 10000;
 Intent startIntent = new Intent("parking.event");
 startIntent.setClass(getBaseContext(), ParkingExpirationWarmingBroadcast.class);
 PendingIntent startPendingIntent = PendingIntent.getBroadcast(this, 99, startIntent, 0);


 alarmMgr.setExact(AlarmManager.RTC_WAKEUP,
                inTime,
                startPendingIntent);
广播接收机已注册

    <receiver
      android:name=".modules.parking.ParkingExpirationWarmingBroadcast"
      android:enabled="true">
        <intent-filter>
            <action android:name="parking.event" />
        </intent-filter>
    </receiver>
只有当应用程序位于后台时,才会触发接收器。当我从多任务中滑动应用程序时,通知将被清除,并且不会触发新的警报。我在Android 7.0上检查了这个设置,无论应用程序是否运行,都会触发BroadcastReceiver

我知道Android Oreo对隐式广播的限制,但我不认为我上面提到的意图是隐式的


有人能指出我做错了什么吗

这是任何
Android
版本的一般行为。如果您强制退出应用程序,则其
报警
挂起内容
也将被删除


您可以找到相同的答案。

强制关闭应用程序会破坏其组件。这就是强制停止的作用。这不是一个bug,而是一个特性。遵循下面的思路,android框架工程师已经讨论过了。

我的理解是,通过多任务处理杀死应用程序与强制停止应用程序不同。另外,这项工作与7.0上的预期一样。即使我因多任务而关闭应用程序,也会触发警报。@Ankit在许多设备上,从
最近的任务
中滑动应用程序与
强制退出
相同。您可能正在其中一台设备上测试您的应用程序。我正在OnePlus 3T上测试。默认的报警应用程序似乎工作正常,即使我杀了它。让我找另一个有Oreo的设备。好吧,如果你读了这个问题,我没有明确地强制应用程序退出设置。我刚刚从最近的应用程序中删除了它(通过按下多任务按钮并向左/向右滑动)。正如Marko Pacak在上面的回答中提到的,一些装置确实认为这是一种力量。我做了一点测试,问题只出现在OnePlus设备上。其他应用程序都没有预期的表现。calendar不会触发事件,或者google keep不会在最近的应用程序中设置弹出提醒。请尝试用setExactAndAllowHileId()方法替换setExact()。文档中指定,当设备进入睡眠模式时,旧方法setExact()不起作用,我认为这就是您的情况。点击这个链接
class ParkingExpirationWarmingBroadcast : BroadcastReceiver() {

    @SuppressLint("NewApi")
    override fun onReceive(context: Context, intent: Intent) {
    }
}