10

我使用AlarmManager來啓動服務。當我設置AlarmManager我使用PendingIntent並使用一個唯一的requestCode,它等於我的數據庫中的id行。PendingIntent get requestCode

PendingIntent pendingIntent = PendingIntent.getBroadcast(SettingsActivity.this, 
          lecture.getId(), myIntent, 0); 

如何在啓動時在服務中檢索該ID?我基本上只需要requestCode參數。我想使用該ID從我的數據庫中檢索數據並將其顯示在通知中。我已經實現了所有的東西,我只需要requestCode。有可能得到它嗎?

感謝

回答

14

你需要把lecture.getId()到您myIntent的臨時演員。根據Javadoc requestCode甚至還沒有使用。

// store id 
myIntent.putExtra("id", lecture.getId()); 

// read id or -1, if there is no such extra in intent 
int id = myIntent.getIntExtra("id", -1); 
+0

但即使應用程序被殺死,我也需要該ID。當一個應用程序被殺害時,額外的數據被刪除。如何在額外服務中的id爲null時從服務數據庫中獲取必要的數據?或者我錯了嗎? – Aksiom

+1

@Aksiom'PendingIntent'在被解僱時會有額外的功能,它與進程被殺完全無關,'PendingIntent'就是一種獨立於應用程序運行的意圖,即使你的應用程序沒有運行! –

+0

@Aksiom但設備啓動後(重新啓動)'PendingIntent'將被刪除,所以在啓動時**你必須重新註冊'PendingIntent'和'AlarmManager' –