? ? ? ?南昌APP開發公司的安卓開發人員都知道,一個PendingIntent只能登記一個定時器。這也是isOn值為false時,setServiceAlarm (Context, boolean)方法的工作原理:首先調用AlarmManager.cancel(PendingIntent)方法撤銷PendingIntent的定時器,然后撤銷PendingIntent。
? ? ? ?既然撤銷定時器也隨即撤消了PendingIntent,可通過檢查PendingIntent是否存在來確認定時器激活與否。具體代碼實現時, 傳入PendingIntent.FLAG_NO_CREATE 標志給PendingIntent.getService(...)方法即可。該標志表示如果PendingIntent不存在,則返回null,而不是創建它。
? ? ? ?添加一個名為isServiceAlarmOn(Context)的新方法,并傳入PendingIntent.FLAG_NO_CREATE標志,以判斷定時器的啟停狀態,如下代碼所示:
? ? ? ?添加isServiceAlarmOn()方法(PollService.java)
? ? ? ?public class PollService extends IntentService {
? ? ? ?...
? ? ? ?public static void setServiceAlarm(Context context, boolean isOn) {
? ? ? ?...
? ? ? ?}
? ? ? ?public static boolean isServiceAlarmOn(Context context) {
? ? ? ?Intent i = PollService.newIntent(context);
? ? ? ?PendingIntent pi = PendingIntent
? ? ? ?.getService(context, 0, i, PendingIntent.FLAG_NO_CREATE);
? ? ? ?return pi != null;
? ? ? ?}
? ? ? ?...
? ? ? ?}
? ? ? ?這里的PendingIntent僅用于設置定時器,因此PendingIntent空值表示定時器還未設置。
? ? ? ?以上就是百恒網絡今天所要講的使用PendingIntent 管理定時器的方法,在南昌APP開發中,還會有更多的方法或碰到一些難題,百恒網絡擁有專業的安卓開發大師,具備五年以上的開發經驗,精通安卓、蘋果雙端,不管哪種難題都能為您輕松解決,如有需要APP開發服務的朋友,隨時歡迎咨詢百恒網絡,我們專業為您定制開發!