2016-11-04 3 views
0

Я разрабатываю приложение для Android. В моем приложении я открываю действие при нажатии на уведомление.Вступительное слово извещения имеет проблемы с Activity Life Cycle в 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()); 
    } 

Проблема заключается в том, что когда я открываю от службы и OnBackPressed из SecondActivity, выхода из приложения. Что я хочу сделать, так это всегда хочу открыть MainActivity, когда я нажимаю кнопку в SecondActivity. Так что я попытался переопределить onBackPressed of SecondActivity. Я запускаю MainActivity в onBackPressed. Но проблема в том, что я открываю SecondActivity из уведомлений, затем нажимаю кнопку «Назад», открывает MainActivity.

Но когда я нажимаю кнопку «Назад», он открывает SecondActivity назад. Что я могу сделать, чтобы MainActivity всегда открывался в OnBackPressed из SecondActivity, не имея проблемы с Activity Cycle, как это происходит сейчас.

Это SecondActivity в Manifest

<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 получает по истории backstack. Так что в вашем случае SecondActivity не нужно находиться в задней части. Для достижения этой цели вы можете флаг noHistory="true" в вашем Manifest.xml

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

Edit: Обычно вам не нужно делать это, так как noHistory="true" делает это, но вы можете попробовать позвонить finish().

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

Затем переопределить onBackPressed, открыв MainActivity? –

+0

@WaiYanHein Да –

+0

Я добавил его в файл манифеста. Затем переопределил onBackPressed второй активности. Не работает. Они продолжают открывать друг друга на спине. –