Div*_*ers 22 android alarmmanager
安排警报的代码.
PendingIntent sender = PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, time, sender);
Run Code Online (Sandbox Code Playgroud)
它的工作正常,但当我在任务杀手中杀死我的应用程序时,我丢失了我的预定警报.如何解决这个问题呢?
Jox*_*aex 20
让你的应用程序在被杀死时广播一条消息,当这个消息被广播时,让一个监听器检查服务是否仍在运行..如果它没有运行它.即使应用程序被终止,这也将确保您的服务正在运行.
更新
我将尝试为您创建流程图

onDestroy()方法是服务的一部分.
我希望这有帮助.
更新2
我忘记提到的一件事是,理想情况下,您只需要运行一个服务实例.所以只要查看onStart()中存在的ID应该是== 1来启动它.忽略它.
服务类别的通知方法:
onStart():在启动服务时调用此方法
onDestroy():这是在杀死服务时调用的方法
BroadcastReciever类的通知方法:
onReceive():此方法接收发送给它的所有意图(除非已过滤)
在BroadcastRecievers(消息广播)和服务(启动服务)上查找示例
参考文献:
http://developer.android.com/reference/android/content/BroadcastReceiver.html
http://developer.android.com/reference/android/app/Service.html
小智 6
应用程序关闭时,警报管理器设置的警报不会被终止,如果重新启动,所有警报都会被操作系统清除,因为没有持久性.所以你需要做持久性.
重启时再次设置闹钟.
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//re register the alarm
}
}
Run Code Online (Sandbox Code Playgroud)的Manifest.xml
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
.......
<receiver
android:name="BootReceiver"
android:enabled="true"
android:exported="true"
>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
您可以使用SharedPreference来节省时间(触发警报的时间或下次触发警报的时间)
用它在启动接收器上设置新警报.
| 归档时间: |
|
| 查看次数: |
11032 次 |
| 最近记录: |