Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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通知_Android - Fatal编程技术网

应用程序被终止时未触发Android通知

应用程序被终止时未触发Android通知,android,Android,我正在使用报警管理器设置时间,并在特定时间发出通知。当应用程序是前台或后台时工作正常。我正在安卓8上测试。但是,我的问题是,当应用程序从任务管理器中被终止时,由于广播不起作用,因此不会触发通知。这是因为我在MainActivity的onCreate()中注册了receiver,并在onDestroy()中注销了receiver。如果我在清单中注册我的广播接收器,也许它会起作用,但从Android 8开始是不允许的。我如何解决这个问题,即即使应用程序被关闭,我也会收到广播?广播接收器示例 公共类

我正在使用报警管理器设置时间,并在特定时间发出通知。当应用程序是前台或后台时工作正常。我正在安卓8上测试。但是,我的问题是,当应用程序从任务管理器中被终止时,由于广播不起作用,因此不会触发通知。这是因为我在MainActivity的onCreate()中注册了receiver,并在onDestroy()中注销了receiver。如果我在清单中注册我的广播接收器,也许它会起作用,但从Android 8开始是不允许的。我如何解决这个问题,即即使应用程序被关闭,我也会收到广播?

广播接收器示例

公共类SchedulerMailBroadcastReceiver扩展了BroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图){
试一试{
i(“调度器:+new DateWrapper().getLocaleString());
PowerManager pm=(PowerManager)context.getApplicationContext().getSystemService(context.POWER\u服务);
PowerManager.WakeLock wl=null;
如果(pm!=null){
Log.d(“aquire wakelog”);
wl=pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,“ics:mailScheduler”);
wl.收购(10000);
}
startInNewThread(context.getApplicationContext(),wl);
}捕获(例外e){
Log.e(e);
}
}
public void startInNewThread(最终上下文,PowerManager.WakeLock-wl){
新螺纹包装器(()->{
试一试{
//做事
}捕获(例外e){
Log.e(e);
}最后{
日志d(“发布日志”);
试一试{
wl.释放();
Log.i(“发布的wakelog”);
}捕获(例外e){
Log.e(“wakelog发布”、“wawkelog发布异常”);
}
}
}).start();
}
公共静态布尔寄存器调度程序(上下文){
最终int请求代码=1234;
意向意向=新意向(上下文,SchedulerMailBroadcastReceiver.class);
意向。设定行动(“启动计划人”);
PendingIntent PendingIntent=PendingIntent.getBroadcast(上下文、请求代码、意图、PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager AlarmManager=(AlarmManager)context.getSystemService(context.ALARM\u服务);
如果(alarmManager!=null){
//alarmManager.cancel(先前挂起的内容);
alarmManager.setRepeating(alarmManager.Appeased_REALTIME_WAKEUP,SystemClock.elapsedRealtime(),1000*60*15,PendingEvent);
Log.i(“注册重复”);
}
返回true;
}

}
您应该创建一项服务,并在手机启动或您的应用程序启动时启动它,即使您的应用程序被关闭,您也可以保持此服务的活动状态。看看广播接收机是如何工作的。谢谢你们,你们能给我一个伪代码或者一个如何实现它的例子或者一些链接吗。如果我没有弄错的话,那将是很有帮助的。我有一个老项目,有一个工作的广播接收器,每当你的定位靠近一个地点时,它就会通知你。今晚晚些时候我会设法找到它,如果我真的找到了,我会告诉你的。那太好了:)谢谢你,你应该检查的事情很快,我看到了你的最后一个问题,如果你想在用户已经收到警报时销毁你的应用程序,为什么要在应用程序的存储上停止你的广播接收器,您应该在发送通知时停止服务。