2015-04-02 75 views
0

我有一個實現IntentService的類,它從Web服務中檢索一些數據,並且如果條件已驗證,則在通知欄的設備上顯示通知。 這是代碼:意向服務,選擇要啓動的活動

現在,如果在通知用戶水龍頭,閃屏活動啓動(我的應用程序的它的第一個活動)
public BackgroundService() { 
    super("SERVICENAME"); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
    if (verifyConditions()) { 
     showNotification(); 
    } 
} 

private void showNotification() { 
    NotificationCompat.Builder builder = new NotificationCompat.Builder(
      this).setContentTitle("title") 
      .setContentText("content") 
      .setSmallIcon(R.drawable.notification_icon); 
    // .setContentIntent(pendingIntent); 

    Intent notificationIntent = new Intent(this.getApplicationContext(), 
      SplashScreen.class); 
    PendingIntent contentIntent = PendingIntent.getActivity(
      this.getApplicationContext(), 0, notificationIntent, 0); 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
      | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

    // set sound 
    Uri alarmSound = RingtoneManager 
      .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    builder.setSound(alarmSound); 

    builder.setContentIntent(contentIntent); 
    Notification notification = builder.build(); 

    // Hide the notification after it's selected 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 

    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(0, notification); 
} 

。如果用戶關閉了應用程序,這是可以的,但如果應用程序在前臺,點擊通知會導致應用程序重新啓動。 有一個快速的方法來檢查應用程序是否在前臺,如果是的話,啓動一個不同的活動,以SplashScreen?

+0

plaese閱讀「Intent.FLAG_ACTIVITY_CLEAR_TOP」的文檔 – Selvin 2015-04-02 10:19:31

回答