2016-11-04 18 views
0

我正在开发一个Android应用程序。在我的应用程序中,我在点击通知时打开活动。通知中的开放活动在Android中的活动生命周期中存在问题

我有两个活动 - MainActivity和SecondActivity

主要活动可以打开SecondActivity

OnBackPressed上SecondActivity,MainActivity将显示背上它是打开SecondActivity活动。 OnBackPressed MainActivity,应用程序将退出。这是默认的活动应用程序首先启动。现在我遇到了问题,因为我从服务内部打开了SecondActivity。

我这是怎么打开SecondActivity从服务

private void showTrollPostNotification(String message) 
    { 
     notification = new NotificationCompat.Builder(getApplicationContext()); 
     notification.setAutoCancel(true); 
     notification.setSmallIcon(R.mipmap.ic_launcher); 
     notification.setWhen(System.currentTimeMillis()); 
     notification.setTicker(message); 
     notification.setContentTitle(getApplication().getResources().getString(R.string.app_name)); 
     notification.setContentTitle(message); 

     Intent i = new Intent(getApplicationContext(), SecondActivity.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),0,i,PendingIntent.FLAG_UPDATE_CURRENT); 
     notification.setContentIntent(pendingIntent); 
     NotificationManager nm = (NotificationManager)getApplicationContext().getSystemService(getApplicationContext().NOTIFICATION_SERVICE); 
     nm.notify(1,notification.build()); 
    } 

的问题是,当我从服务和SecondActivity的OnBackPressed,退出应用程序打开。我想要做的是当我按下SecondActivity内的按钮时,我总是想打开MainActivity。所以我尝试的是重写SecondActivity的onBackPressed。我在onBackPressed中启动MainActivity。但问题是,当我从通知中打开SecondActivity时,然后按回按钮,它将打开MainActivity。

但是,当我按回按钮然后,它打开SecondActivity回来。我能做些什么来使MainActivity始终在SecondActivity的OnBackPressed中打开,而不会像现在发生的Activity Cycle一样发生问题。

这是SecondActivity在清单

<activity 
      android:noHistory="true" 
      android:label="Post Details" 
      android:name=".SecondActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.VIEW" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

这onBackPressed SecondActivity

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(getApplicationContext(),MainActivity.class); 
    startActivity(intent); 
} 

回答

1

的实际情况是,在SecondActivity获得的历史堆栈中。所以在你的情况下,SecondActivity不需要在背后。要在您的Manifest.xml

<activity 
    android:name=".YourSecondActivity" 
    android:noHistory="true" /> 

编辑做到这一点,你可以标记noHistory="true":通常你不需要这么做,因为noHistory="true"这样做,但你可以尝试调用finish()

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(this,MainActivity.class); 
    startActivity(intent); 
    finish(); 
} 
+0

然后重写onBackPressed打开MainActivity? –

+0

@WaiYanHein是的 –

+0

我将它添加到清单文件中。然后重写第二个Activity的onBackPressed。不工作。他们继续打开对方的背部按下。 –