programing

Android에서 다시 로드 작업

sourcejob 2023. 9. 16. 08:57
반응형

Android에서 다시 로드 작업

재장전하는 것이 좋은 연습인가요?Activity안드로이드에서?

그것을 하는 가장 좋은 방법은 무엇입니까?this.finish그리고 나서.this.startActivity활동과 함께Intent?

간단히 사용할 수 있습니다.

finish();
startActivity(getIntent());

리프레시키다Activity그 자체로부터

재생성 깜빡임을 보고 싶지 않은 사람들을 위해, 간단히 다음 방법을 사용합니다.

 finish();
 overridePendingTransition(0, 0);
 startActivity(getIntent());
 overridePendingTransition(0, 0);

기본 설정 변경 후 복귀한 후 활동을 다시 로드하는 작업입니다.

@Override
protected void onResume() {

   super.onResume();
   this.onCreate(null);
}

이로 인해 기본적으로 활동이 다시 그려지게 됩니다.

업데이트됨: 더 나은 방법은 다음에 전화하는 입니다.recreate()방법.이렇게 하면 작업이 다시 생성됩니다.

간단히 쓰다

this.recreate();

활동에서 onCreate 메서드를 트리거합니다.

인텐트(Intent)를 사용하여 활동을 다시 로드할 때 제공된 이전 답변을 보았습니다.이 방법을 사용할 수도 있지만, 액티비티 클래스 자체에 주어진 recreate() 메서드를 사용하여 동일한 작업을 수행할 수도 있습니다.

이 글을 쓰는 대신에

// 대화상자를 닫을 때 기본 활동 새로 고침

Intent refresh = new Intent(this, clsMainUIActivity.class);
startActivity(refresh);
this.finish();

이것은 이것만 적어야 할 수 있습니다.

recreate();

애플리케이션 중 하나에서 메시지 목록을 급하게 업데이트해야 해서 대화 상자를 닫기 전에 메인 UI 작업을 새로 고치기만 했습니다.저는 이것을 달성하기 위한 더 좋은 방법들이 있을 것이라고 확신합니다.

// Refresh main activity upon close of dialog box
Intent refresh = new Intent(this, clsMainUIActivity.class);
startActivity(refresh);
this.finish(); //

Android에는 수동으로 다시 시작할 때 얻을 수 있는 모든 이점을 부정하는 활동의 생성과 소멸을 처리하는 프로세스 관리 시스템이 포함되어 있습니다.Application Fundamentals에서 자세한 정보를 확인할 수 있습니다.

좋은 방법은 onPause 및 onStop 방법을 사용하여 LowMemory에서 사용할 필요가 없는 리소스를 해제하여 작업 요구를 최소화하는 것입니다.

당신과 같은 의도로 시작합니다.activity그리고 문을 닫습니다.activity.

Intent refresh = new Intent(this, Main.class);
startActivity(refresh);//Start the same Activity
finish(); //finish Activity.

전체 활동을 다시 로드하는 것은 힘든 일일 수 있습니다.새로 고쳐야 할 코드 부분을 (kotlin)에 넣기만 하면 됩니다.

override fun onResume() {
    super.onResume()
    //here...
}

Java:

@Override
public void onResume(){
    super.onResume();
    //here...

}

필요할 때마다 "재개()"를 호출합니다.

어떤 경우에는 이것이 최선의 방법이며, 다른 경우에는 좋은 방법이 아닙니다. 만약 여러분이 다음과 같이 선택한다면, 그것은 그녀의 아들들에게 활동을 전달하는 가장 좋은 방법입니다.

    Intent i = new Intent(myCurrentActivityName.this,activityIWishToRun.class);    
    startActivityForResult(i, GlobalDataStore.STATIC_INTEGER_VALUE);

그것은 당신이 활동을 끝마칠때마다 입니다.투런(ToRun) 당신이 다시 살아있는 활동으로 돌아갔으면 합니다.

이것을 사용했고 그것은 없어도 잘 작동합니다.finish()

startActivity(getIntent());

활동을 새로 고치려면 다음을 호출할 수 있습니다.

this.recreate();

또는 모든 사용자 지정 어댑터의 경우:

context.recreate(); 

이거 한번 해보세요.

((Activity) context).recreate();

또는 모든 프래그먼트에 대해:

getActivity().recreate();

활동을 새로 고치고 싶은 곳에서 호출할 수 있습니다.다른 활동에서 돌아오는 활동을 새로 고치려면 Restart() 기능을 호출할 수 있습니다.

@Override
    protected void onRestart() {
        this.recreate();  // refresh activity
        super.onRestart();
    }

별로 좋은 생각은 아닌 것 같은데요...좀 더 깨끗한 방법을 사용하는 것이 좋겠습니다.예를 들어, 활동이 양식을 보유하고 있는 경우, 정리 방법은 양식의 각 위젯을 지우고 모든 임시 데이터를 삭제할 수 있습니다.활동을 초기 상태로 복원하는 것이 여러분이 원하는 일이라고 생각합니다.

한동안 이 작업을 수행해 본 결과 작업을 다시 시작해도 예기치 않은 결과가 나타나지 않았습니다.또한 방향이 바뀌면 안드로이드가 기본적으로 하는 것과 매우 비슷하다고 생각하기 때문에 비슷한 상황에서 하지 않을 이유가 없다고 봅니다.

나도 같은 문제가 있습니다.

import android.support.v4.content.IntentCompat;

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);

이 코드는 나에게 적합합니다. Android api17

전화를 걸 수 있는 활동에서recreate() 11을 조다 조"(API 11+)를 ".

다른 Intents를 생성하지 않고 동일한 Intents 새 데이터를 로드하는 것입니다.

    overridePendingTransition(0, 0);
    finish();
    overridePendingTransition(0, 0);
    startActivity(getIntent());
    overridePendingTransition(0, 0);

로그인 후에도 같은 문제가 생겨서 사용했습니다.

@Override
protected void onRestart() {
    this.recreate();
    super.onRestart();
}

는 또 과 이 이 과 launchMode에 대한 나의 활동.singleTop전화도 없이finish(), 그냥.startActivity(getIntent())그 일을 할 것입니다새로운 데이터에 신경을 쓰면 됩니다.onCreate()그리고.onNewIntent말한 수 . Sush의 방식으로, AMAN SINGH의 말대로 어플리케이션이 깜빡일 수 있습니다.하지만 아만 싱의 접근법은 그가 '깜깜이' 문제를 고쳤다고 해도 어떻게든 불필요한 새로운 활동을 만들어 낼 것이라고 생각합니다.

이 질문에는 너무 늦었지만, 누군가 해결책을 찾고 있다면, 여기 있습니다.

언급URL : https://stackoverflow.com/questions/3053761/reload-activity-in-android

반응형