2015-05-18 51 views
1

我開發了一個應用程序,它會在特定時間提醒我。因此我實現了一個啓動通知的IntentService。問題是,通知將在應用程序處於前臺或至少在後臺打開時創建。當我通過任務管理器關閉應用程序時,通知不再運行。IntentService的通知

我使用錯誤的服務嗎?或者我必須創建一些專業?

在intentservice類

private static final String serviceName = "sebspr.de.deadlines.DeadLineService"; 

public DeadLineService() { 
    super(serviceName); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 

    Context ctx = getApplicationContext(); 
    Intent intent = new Intent(ctx, DeadLineService.class); 
    PendingIntent pIntent = PendingIntent.getActivity(ctx, 0, intent, 0); 


    String title = getTitle(list.size()); 
    String text = getText(list); 
    Notification noti = new Notification.Builder(ctx) 
      .setContentTitle(title) 
      .setContentText(text).setSmallIcon(R.mipmap.ic_notfi) 
      .setContentIntent(pIntent) 
      .build(); 
    NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE); 
    // hide the notification after its selected 
    noti.flags |= Notification.FLAG_AUTO_CANCEL; 

    notificationManager.notify(0, noti); 



} 

INT在MainActivity:

Intent msgIntent = new Intent(this, DeadLineService.class); 
startService(msgIntent); 

UPDATE

考慮到我的實際問題的解決方案是,去看看在ArlarmManager。 IntentService在這裏是錯誤的路。我發現了一個很好的教程在這裏:AlarmManger Example

+0

而在你看來,如果應用程序通過任務管理器關閉它仍然應該顯示通知或..? – Divers

+0

你在任務管理器中終止應用程序,它會刪除通知,因爲你殺了應用程序。這正是應該發生的事情。 – DeeV

+0

好的。但我希望用戶仍然可以收到通知。我該如何處理? – Bolic

回答

1

不應該擔心關於用戶通過任務管理器查殺應用程序。如果發生這種情況,你真的不應該自動啓動備份。這不是一種用戶友好的做事方式。

什麼你應該擔心是系統重啓在這種情況下,設備開啓時,你可以註冊你的應用程序通知。

退房this回答有關開機時啓動服務的更多詳細信息。

也開始爲您服務sticky

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return START_STICKY; 
}