2013-05-02 13 views
0

我想創建一個通知,當點擊時在我的應用程序中彈出一條消息,然後當用戶點擊後退按鈕時,我想讓它回到我的主屏幕。爲什麼這會帶來新的實例

現在的問題是它創建一個全新的實例,所有的前一個數據都會丟失。我究竟做錯了什麼?

NotificationManager nm = (NotificationManager) getSystemService("notification"); 
Intent intent = new Intent(this, beerwarn.class); 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
stackBuilder.addParentStack(beerwarn.class); 
stackBuilder.addNextIntent(intent); 
PendingIntent pIntent = stackBuilder.getPendingIntent 
              (0, PendingIntent.FLAG_UPDATE_CURRENT); 
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
builder.setContentIntent(pIntent) 
     //Notification noti = new Notification.Builder(this) 
     .setContentTitle("BAC Level Notice") 
     .setContentText("Your BAC has dropped below Max Legal BAC") 
     .setSmallIcon(R.drawable.ic_launcher) 
     .setContentIntent(pIntent) 
     .setSmallIcon(R.drawable.beerwarn); 
     //builder.flags |= Notification.FLAG_AUTO_CANCEL; 

nm.notify(1, builder.build()); 

回答

0

添加android: launchMode = singleTask或singleInstance您的活動在AndroidManifest.xml

<activity 
     android:name="yourmainscreenActivity" 
     android:exported="false" 
     android:launchMode="singleTask" > 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
0

這裏是我的建議,當你彈出消息屏幕,清晰的所有其他活動。

NotificationManager nm = (NotificationManager) getSystemService("notification"); 
Intent intent = new Intent(this, beerwarn.class); 
intent .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent , PendingIntent.FLAG_UPDATE_CURRENT); 
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
builder.setContentIntent(pIntent) 
    .setContentTitle("BAC Level Notice") 
    .setContentText("Your BAC has dropped below Max Legal BAC") 
    .setSmallIcon(R.drawable.ic_launcher) 
    .setContentIntent(pIntent) 
    .setSmallIcon(R.drawable.beerwarn); 

nm.notify(1, builder.build()); 

在您beerwarn.class,overrride的onBackPressed功能,檢查您mainscreen活動是否正在運行,假設是它命名爲MainScreen.class,如果沒有,啓動它。

ActivityManager mngr = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
List<ActivityManager.RunningTaskInfo> taskList = mngr.getRunningTasks(10); 
for (ActivityManager.RunningTaskInfo rti : taskList) { 
    if (rti.topActivity.getClassName().equals(this.getClass().getName())) { 
     if (!rti.baseActivity.getClassName().equals(MainScreen.class.getName())) { 
      Intent i = new Intent(this, MainScreen.class); 
      i.putExtra("currentTab", getIntent().getIntExtra("currentTab", 1)); 
      startActivity(i); 
      break; 
     } 
    } 
} 

super.onBackPressed(); 
相關問題