2016-11-04 2 views
0

Android 앱을 개발 중입니다. 내 앱에서 알림을 클릭하면 활동을 시작합니다. MainActivity와 SecondActivity 주요 활동은 SecondActivity에서 OnBackPressed 알림에서 활동 열기가 Android의 활동 수명주기에 문제가 있습니다.

SecondActivity

을 열 수 있습니다

는, MainActivity 그것이 SecondActivity를 여는 활동 다시 표시됩니다 -

나는이 개 활동을해야합니다. MainActivity의 OnBackPressed는 응용 프로그램을 종료합니다. 처음 실행되는 기본 활동 응용 프로그램입니다. 이제 서비스 내부에서 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를 열 방법입니다 내가 서비스와 SecondActivity의 OnBackPressed, 응용 프로그램이 종료에서 열 때. 내가하고 싶은 일은 SecondActivity 내에서 뒤로 버튼을 누르면 MainActivity를 항상 열고 싶습니다. 그래서 내가 시도한 것은 SecondActivity의 onBackPressed를 오버라이드 (override)하는 것이다. onBackPressed에서 MainActivity를 시작합니다. 하지만 문제는 알림에서 SecondActivity를 연 다음 다시 버튼을 누르면 MainActivity가 열리는 것입니다.

하지만 뒤로 버튼을 누르면 SecondActivity가 다시 열립니다. MainActivity를 SecondActivity의 OnBackPressed에서 항상 열려면 어떻게해야합니까? 지금과 같은 활동주기 문제는 발생하지 않습니다.

이가 어떻게 발생하면 SecondActivity는 역사 가기 backstack에 얻을 수 있다는 것입니다 SecondActivity

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

답변

1

의 onBackPressed되어 매니페스트

<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> 

에 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

@WayYanHein 예 –

+0

매니페스트 파일에 추가했습니다. 그런 다음 두 번째 작업의 onBackPressed를 재정의합니다. 작동 안함. 그들은 누를 때마다 서로를 계속 열어 놓습니다. –