标签:android android-intent android-alarms
我有一个Android应用程序,它具有在后台运行的服务,与远程服务器通信并在需要时向用户显示通知.该应用程序还有一个供用户与之交互的活动.
其中一个要求是应用程序需要在早上自动启动.在一天结束时,用户可以自由退出应用程序(退出功能会停止服务,释放唤醒锁定,并让Android终止该过程).为了自动重启应用程序,我使用AlarmManager和PendingIntent安排警报:
//create intent to alert OnStartReceiver when alarm goes off
Intent i = new Intent(context, OnStartReceiver.class);
i.setAction("com.pointtrace.intents.alarm");
i.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION|Intent.FLAG_FROM_BACKGROUND);
//wrap inside PendingIntent so that it can be used from outside
//our application
PendingIntent pi = PendingIntent.getBroadcast(context, 1, i, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarms = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Log.d("GXT", "Scheduling alarm action(i)=" + i.getAction());
//set alarm to go off at wake time
alarms.set(AlarmManager.RTC_WAKEUP, getWakeTime(), pi);
注册OnStartReceiver类以接收广播,并在发生警报时重新启动应用程序.
除非用户从任务管理器中杀死应用程序,否则一切正常.如果应用程序正常退出,要么被Android操作系统杀死,要么我调用System.exit(0);它恢复正常.但当它从任务管理器中被杀死时,看起来几乎就像警报被取消一样.
我在Android文档中找不到任何暗示任务管理器会取消警报的内容.我是否在如何正确设置警报方面做错了什么?
我已经尝试删除标志,只是使用0但它没有任何区别.
谢谢.
解决方法:
Quit functionality stops the service, releases the wake lock, and lets Android kill the process
如果你暗示你有一个连续的WakeLock,除非它只在永久插入的设备上运行,否则你的用户会用鳟鱼打你.
此外,Android可以随时终止进程.不要将startForeground()误认为是Android永远不会杀死你的进程的某种保证.
But when it is killed from Task Manager is looks almost like alarm is getting cancelled.
我不知道“任务管理器”是什么,因为在Android中没有.如果您指的是“设置”中正在运行的应用列表,然后单击“强制停止”,则表示“是”,它会取消任何未完成的警报,并阻止您的应用再次运行,直到手动启动某个组件(例如,用户从启动器启动您的应用) ).
Am I doing something wrong in regards to how to properly set the alarms?
可能不是.强制停止肯定会消除你的警报.
标签:android,android-intent,android-alarms 来源: https://codeday.me/bug/20190626/1289366.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。