应用程序停止时如何在 Android 中获取本地通知?

Posted

技术标签:

【中文标题】应用程序停止时如何在 Android 中获取本地通知?【英文标题】:How to get local notification in Android while Application stop? 【发布时间】:2011-07-28 13:00:16 【问题描述】:

我正在开发一个使用本地通知的 android 应用程序 通过使用警报管理器和广播接收器。我收到通知,默认情况下没有任何错误。如果我使用设置-> 应用程序-> ManageApplication-> MyApplication-> ForceStop 强制停止我的应用程序,我没有收到通知。我的代码是

安排活动

        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MINUTE, 2);
        Intent intent = new Intent(this, AlarmReceiver.class);
        intent.putExtra("alarm_message", "O'Doyle Rules!");
        PendingIntent sender = PendingIntent.getBroadcast(this, 192837,
                intent, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
        am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);

我的广播接收器

try 
        
             Bundle bundle = intent.getExtras();
             String message = bundle.getString("alarm_message");
             Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
             Intent i=new Intent(context,AlertActivity.class);
             i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
             context.startActivity(i);     
         
        catch (Exception e) 
             
            e.printStackTrace();
        

请给我一些建议来解决我的问题。提前致谢

【问题讨论】:

你能显示你的 logcat 错误,以便我试着找出你出错的地方 我没有收到任何日志猫错误 【参考方案1】:

你能再解释一下吗...我猜如果不使用任何后台服务或应用程序小部件之类的东西,你怎么能期望你的应用程序即使在强制关闭后也能继续运行???

【讨论】:

1.设置闹钟并关闭闹钟(使用 taskiller)后,闹钟永远不会响起。为什么?我认为这是意图和广播接收器背后的想法。另外,android可以因为需要资源而杀死警报吗?这可能吗?【参考方案2】:

这不起作用,您必须执行以下操作:

Calendar cal = Calendar.getInstance(); 
cal.setTimeInMillis(SystemClock.elapsedRealtime());
cal.add(Calendar.MINUTE, 2);

...等等...

【讨论】:

【参考方案3】:

API forcestoppackage 将取消与包关联的警报 所以以后什么都不会发生。

forcestopPackage() 将发送一个带有动作“package_restart”的广播,AlarmManagerService 监听这个广播并移除所有被强制停止的应用设置的警报。

【讨论】:

以上是关于应用程序停止时如何在 Android 中获取本地通知?的主要内容,如果未能解决你的问题,请参考以下文章

停止本地通知

当android应用程序后台运行时如何在android中隐藏视图(在后台运行时不停止android拍摄快照)[重复]

Android 7.0 (Nougat) 打盹模式停止 Web 服务

如何在 Android 中获取当前连接的 BLE 外围设备

在android soundpool中播放新声音时如何停止所有其他以前的声音?

如何获取设备独立的本地日期和时间Android