2014-10-03 3 views
1

내 앱에는 5 개의 주요 활동을 제외하고 다른 4 개의 활동을 주기적으로 반복 사용하고 있습니다.Can not finish Activity

내 각 활동 (주 제외) onPause() 메소드 Activityname.this.finish();를 작성했습니다.

내가 5 번째 활동주기를 종료하고 다시 주요 활동에 반환하고있어

...

하지만 대신 앱 다운의 .. 주요 활동을 종료하고있을 때 내 문제는, 그것은 3 번째로 이동 활동.

정확히 어디서 문제가 있는지 알 수 없습니다. dbn을 사용하여 명시 적으로 닫지 않는 제 3의 활동에있을 수 있습니다. 이게 문제 야?

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    PlayerDetails.this.finish(); 
} 

이 onPause() 메소드 난 당신이 대신 각 활동의 모든 시간 finish()를 호출 Flags를 사용할 수있는 응용 프로그램을

+0

몇 가지 코드 스 니펫을 넣으 실 수 있습니까? – nilkash

+0

코드를 입력하고 주 활동의 버튼 (종료)을 체크 해보십시오. 버튼 정의에 세 번째 활동에 대한 의도 링크가 포함되어 있습니까? 또는 그냥 단순한 system.kill 또는 finish() 또는 android.process.os.kill (android.process.os.kill.mypid) [올바른 형식을 찾기 위해 pseudo로 검색, 내 나쁜 내가 지금 기억하지 않는다] –

+0

@akshaybhanage 그냥 finish()를 호출하십시오. 다음 활동을 시작할 때 주 활동에서 다른 활동으로 이동할 때 전화하지 마십시오 – Umair

답변

4

를 닫

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    // TODO Auto-generated method stub 
    if (keyCode==KeyEvent.KEYCODE_BACK){ 
     AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this); 
     alert.setIcon(R.drawable.ic_launcher); 
     alert.setTitle(R.string.app_name); 
     alert.setMessage("Really Exit?"); 
     alert.setPositiveButton("Yes", new DialogInterface.OnClickListener(){ 
      @Override 
      public void onClick(final DialogInterface dialog, final int which) { 
        MainActivity.this.finish(); 
        dialog.dismiss(); 
        } 
     }); 
     alert.setNegativeButton("No", new DialogInterface.OnClickListener(){ 
      @Override 
      public void onClick(final DialogInterface dialog, final int which) { 
        dialog.dismiss(); 
        } 
     }); 
     try{ 
     AlertDialog dialog = alert.create(); 
     dialog.show(); 
     } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
    return true; 
} 

를이 내 mainActivity 방법이다 사용하고 있습니다. 새로운 활동을 시작하면 FLAG_ACTIVITY_CLEAR_TASK을 사용하고 Intent과 함께 FLAG_ACTIVITY_NEW_TASK을 사용하면 스택 버퍼가 지워지고 새 것으로 활동이 시작됩니다. 비슷한 ...

Intent intent = new Intent(current_context, destination_activity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 

플래그에 대한 자세한 내용은 conversation에서 확인할 수 있습니다.

1

onPause()를 사용하는 대신 onStop() 메서드를 사용하십시오. 어떤 이유로 인해 onPause는 호출이 아니지만 onStop이됩니다.

@Override 
protected void onStop() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    finish(); 
}