我最近一直在製作Android應用程序.. 其中我使用了Pending Intent和Alarm Manager。 我需要有多個掛起的意圖,所以我正在使用FLAG_ONE_SHOT。報警管理器將按照提及的間隔發送廣播。還有,我正在使用intent的setAction()方法並將currentTimeMillis()作爲參數傳遞。我有相應的廣播接收器。問題是,一旦應用程序關閉,或從最近的托盤中刪除,廣播接收器不運行。 的代碼如下:待定意圖和報警管理器
setAlarm:
private void setupAlarm(int seconds) { AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(getBaseContext(), OnAlarmReceive.class); //PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT); intent.setAction(Long.toString(System.currentTimeMillis())); intent.putExtra("id", ID); PendingIntent pendingIntent = PendingIntent.getBroadcast(ChatActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT); Log.e(TAG, "Setup the Alarm"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.SECOND, seconds); alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);}
廣播接收機
public void onReceive(Context context, Intent intent) { String id = intent.getStringExtra("id"); Log.e(TAG,"On the verge of deleting the message with id: "+id); SQLiteDatabase database = context.openOrCreateDatabase("/sdcard/userlists.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); database.execSQL("DELETE FROM " + "MESSAGE" + " WHERE " + "id" + "= '" + id + "'"); broadcaster = LocalBroadcastManager.getInstance(context); intent = new Intent(COPA_RESULT); broadcaster.sendBroadcast(intent);}
的Manifest.xml
<receiver android:name=".OnAlarmReceive" android:enabled="true" android:exported="true"/>
請幫幫我。即使應用已關閉,我也需要廣播公司來完成這項工作。
使用'service'! –
因此,如果不使用服務,我無法接收廣播? 如果是這樣,你能提供步驟嗎? –