AndroidActivity
에서 다시로드하는 것이 좋습니다 ?
가장 좋은 방법은 무엇입니까? this.finish
그런 다음 this.startActivity
활동과 함께 Intent
?
AndroidActivity
에서 다시로드하는 것이 좋습니다 ?
가장 좋은 방법은 무엇입니까? this.finish
그런 다음 this.startActivity
활동과 함께 Intent
?
답변:
간단하게 사용할 수 있습니다
finish();
startActivity(getIntent());
Activity
자체에서 새로 고치기 위해 .
recreate () 메소드 후 깜박임 을보고 싶지 않은 사람들은 단순히
finish();
overridePendingTransition(0, 0);
startActivity(getIntent());
overridePendingTransition(0, 0);
이것이 환경 설정 변경에서 돌아온 후 활동을 다시로드하기 위해 수행하는 작업입니다.
@Override
protected void onResume() {
super.onResume();
this.onCreate(null);
}
이것은 본질적으로 활동이 다시 그려 지도록합니다.
업데이트 : 더 좋은 방법은 recreate()
메소드 를 호출하는 것입니다. 이로 인해 활동이 다시 작성됩니다.
Intent를 사용하여 활동을 다시로드하기 위해 주어진 이전 답변을 보았습니다. 그것들은 작동하지만 Activity 클래스 자체에 주어진 recreate () 메소드를 사용하여 동일한 작업을 수행 할 수도 있습니다.
이것을 쓰는 대신
// 대화 상자를 닫으면 주 활동을 새로 고칩니다.
Intent refresh = new Intent(this, clsMainUIActivity.class);
startActivity(refresh);
this.finish();
이것은 이것을 작성하여 수행 할 수 있습니다
recreate();
recreate()
"StartActivityForResult"를 사용하여 활동을 시작하고 동작이 중단됨에 따라 활동이 "다시 시작"되었습니다.
단순히 사용
this.recreate();
이것은 활동에서 onCreate 메소드를 트리거합니다.
Android에는 활동의 생성 및 소멸을 처리하는 프로세스 관리 시스템이 포함되어있어 수동으로 활동을 다시 시작하면 얻을 수있는 이점을 크게 무효화합니다. 이에 대한 자세한 내용은 Application Fundamentals 에서 확인할 수 있습니다.
그러나 모범 사례는 onPause 및 onStop 메소드가 활동 요구를 절대적으로 최소화하기 위해 onLowMemory 를 보유하고 사용할 필요가없는 모든 자원을 해제하도록하는 것 입니다.
어떤 경우에는 최선의 방법입니다. 다른 경우에는 다음과 같은 방법으로 활동을 시작하여 아들에게 전달하는 것이 가장 좋습니다.
Intent i = new Intent(myCurrentActivityName.this,activityIWishToRun.class);
startActivityForResult(i, GlobalDataStore.STATIC_INTEGER_VALUE);
일은 당신이 activityIWishToRun에서 끝날 때마다 살아있는 활동으로 돌아갑니다.
이것을 잠시 동안 실험 한 후에 활동을 다시 시작한 결과 예기치 않은 결과가 발견되지 않았습니다. 또한 방향이 변경 될 때 Android가 기본적으로하는 것과 매우 유사하다고 생각하므로 비슷한 상황에서이를 수행하지 않는 이유는 없습니다.
나는 같은 문제가있다
import android.support.v4.content.IntentCompat;
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);
이 코드는 저에게 효과적입니다. 안드로이드 API 17
액티비티에서는 액티비티 recreate()
를 "재 작성"하도록 호출 할 수 있습니다 (API 11+).
나는 또 다른 접근 방식을 가지고 있었다 : launchMode
내 활동의 설정 singleTop
을 전화하지 않고 전화하지 않고 finish()
바로 일을 startActivity(getIntent())
할 것이다. onCreate()
와 에서 모두 새 데이터를 관리해야합니다 onNewIntent
. Sush의 방식으로 AMAN SINGH가 말한 것처럼 응용 프로그램이 깜박일 수 있습니다. 그러나 AMAN SINGH의 접근 방식은 여전히 '깜박임'문제를 해결하더라도 불필요하게 새로운 활동을 창출 할 것이라고 생각합니다.
이 질문에 너무 늦었지만 누군가 해결책을 찾고 있다면 여기 있습니다.