我正在製作一個應用程序,提醒我每隔10分鐘(遠離計算機)休息一下,每隔一小時(休息10分鐘,由加速度計跟蹤)。Android環境爲空?
該應用程序使用AlarmManager來安排警報。您必須按開始按鈕來安排警報。每隔10分鐘,ShortBreakNotif廣播就會被解僱。每個小時,BreakNotifService都會被觸發。 (我縮短了這些測試時間)。
ShortBreakNotif和BreakNotifService都需要啓動MusicService。所以,因爲有兩個位置需要用於startService()的musicIntent,所以我試圖只在TimerViewActivity中創建musicIntent並使其可用於TimerViewActivity onDestroy方法。這是做到這一點的正確方法嗎?它不起作用(TimerViewActivity,251行):
musicIntent = new Intent(TimerViewActivity.this, MusicService.class);
看起來上下文爲空。那可能是因爲活動尚未完全初始化?如果musicIntent僅在幾秒鐘後創建,那怎麼可能呢?它說: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
getApplicationContext()也不起作用。導致這個錯誤:java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
我應該怎麼做?
下面是完整的項目:https://github.com/felixglusch/AccelTimer/tree/master/app/src/main/java/com/example/felix/acceltimer
如果您對代碼有任何疑問,請詢問。
我認爲你必須創建在接收一個意圖,一個在服務和不要試圖在活動封裝,因爲環境會有所不同。 – GSala