2016-06-22 5 views
0

두 가지 안드로이드 활동이 있습니다 (A1 및 A2라고 부름). 첫 번째 목적은 여러 선형 레이아웃 항목을 표시하는 것입니다. 또한 새 항목을 추가하는 버튼이 있습니다. 다음과 같은 의도를 사용하여 추가 버튼을 클릭하면 :안드로이드 활동이 일시 중지되지 않았습니다.

//... 
Intent intent = new Intent(this, CreateActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
//... 

응용 프로그램이 첫 번째 일시 중지 A2 로 전환해야한다. A2에서 유형에 액세스 할 때 다음과 같이 A1로 다시 전환합니다.

//... 
Intent intent = new Intent(super.getContext(), HomeActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
intent.putExtra("type", this._type); 
super.getContext().startActivity(intent); 
//... 

인 텐트, 작동하는 레이아웃에 새 항목을 추가하십시오. 이제 A2에서 A1으로 전환 할 때마다 호출되는 onCreate, onResume, onPause 메서드가 있습니다. 정상적인 안드로이드 동작인가요?

는 지금까지 내가 활동의 라이프 사이클을 이해로 플래그 NEW_TASKCLEAR_TASK

. 그들은에서 호출하고있는 활동을 일시 중지 새로운 프로세스를 열고 나는 안드로이드에서 활동 전환에 대해 여러 가지 문서화를 읽을 수는 있지만 didn를했습니다 명시 적으로 활동을 일시 중지하고 onCreate 등을 다시 호출하지 말라고하는 방법에 대한 요점을 실제로 알지 못합니다.

+0

Intent.FLAG_ACTIVITY_NEW_TASK 및 Intent.FLAG_ACTIVITY_CLEAR_TASK을 (를) 사용하는 이유는 무엇입니까? –

+0

이 작업의 목적은 A1을 일시 중지하는 새 작업을 생성하기 위해 Android에 명시 적으로 알리는 것입니다. 두 번째 작업은 작업을 종료하고 onResume을 트리거하는 A1로 돌아갑니다. – hGen

+0

u는 의도 플래그가있는 행을 제거하고 A2 작업에서 this.finish()를 호출하면 작업이 완료 될 때 –

답변

1

나는 당신이 백업해야 할 때 그래서 u는 단지 활동이

(Intent.FLAG_ACTIVITY_NEW_TASK) 

플래그없이보다 A2를 시작할 수 유를 가지고 A2 활동의 또 다른 하나를 만들 수 있기 때문에 당신의 활동 A1, 2 회를 ​​만들어 여기에 생각 활동이 부분적으로 볼 때 A1 호출

A2.this.finish() 

이 도움이되고 A1 onPause가 호출

+0

'finish() '를 사용하여 추가 전송할 수 있습니까? – hGen

+0

그냥 활동을 시작해야합니다. A2.this.finish()는 작업을 끝낸 지점에서 A2가 스택에서 튀어 나오고 A1이 다시 정상으로 돌아오고 스택보다 많은 수의 A1 활동을 만들 필요가 없습니다. –

1

OnPause()를 호출 시작합니다 생각 사용자에게 전달할 수는 있지만 사용자와 상호 작용할 수는 없습니다. 귀하의 경우 다음 활동이 시작될 때 첫 번째 활동은 onStop()으로 전화합니다. onPause()은 경고 상자 또는 대화 상자 bix가 화면에 표시 될 때만 호출됩니다. onStop()에 코드를 작성해보십시오.

1

이제는 A2에서 A1으로 전환 할 때마다 호출되는 onCreate, onResume, onPause 메서드가 있습니다.

당신이 활동을 다시 쿼리하기 때문에 정상입니다 super.getContext().startActivity(intent);

그냥 A1로 돌아 A2 내부 finish를 호출합니다.

플래그 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT을 의도에 넣을 수도 있습니다. A2 활동은 파괴되지 않습니다.

0
  1. FLAG_ACTIVITY_NEW_TASK ->이 플래그는 그래서 먼저 제거 새로운 활동을 시작합니다.당신이 방법을 다음보다는 만약 startActivity()

에 startActivityForResult

그리고 당신은

에 콜백을 얻을 것이다으로 다음 A1에 다음 startActivity를을 A2를 일부 데이터를 보내려면
  • 두 번째

    onActivityResult()

  • 관련 문제