문제

사용자가 특별한 순서없이 탐색하는 3 가지 다른 활동이 있습니다. 내 목표는 두 가지입니다.

  1. 앱이 재개 될 때 사용자가 다른 것으로 전환하면 앱이 종료 된 경우에도 사용자가 남은 곳을 시작하고 싶습니다.
  2. 마지막 활동이 재개 될 때 나는 그것을 마지막으로 본 상태로 복원하고 싶습니다 (이것은 달성하는 방법에 대한 좋은 아이디어가 있다고 생각합니다)

나는 문제가 아니라고 생각한다 시작 멈춤 - 내가 필요한 것을 거의 얻는 곳이지만 onCreate() 앱이 종료 된 경우. 이 경우 - 매니페스트에서 구성한 활동을 선택합니다. 나는 무언가를 넣을 수 있다고 생각합니다 onCreate() 그 기본 활동의 방법이지만 내가 놓칠 수있는 더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

앱이 "종료"되지 않은 경우 #1은 이미 작동해야하며 #2는 자동으로 관리되지 않는 값을 번들에 저장해야합니다. onsaveinstancestate () 그런 다음 복원하십시오 OnRestoreInstancestate ().

이것은 일종의 해킹이지만, 실제로 종료되는 앱의 경우 #1에 대한 최선의 옵션은 각 활동 클래스의 OnResume에서 가장 최근의 활동을 저장 한 다음 처음에 OnCreate를 실행할 때 가장 최근의 활동을 저장하는 것입니다. 첫 번째 활동은 점검을 수행 한 다음 올바른 활동을 시작합니다 ... 아마도 처음에 빈 활동을 입력 할 수도 있습니다. 이 같은:

StartActivity :

public class StartActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // get last open Activity
        String lastActivity = PreferenceManager.getDefaultSharedPreferences(this).getString("last_activity", "");
        if (last_activity == MyActivity2.getSimpleName()) {
            startActivityForResult(new Intent(this, MyActivity2.class));
        } else if (last_activity == MyActivity3.getSimpleName()) {
            startActivityForResult(new Intent(this, MyActivity3.class));
        } else {
            // assume default activity
            startActivityForResult(new Intent(this, MyActivity1.class));
        }
    }

    public void onActivityResult() {
        // kill the activity if they go "back" to here
        finish();
    }
}

그런 다음 다른 모든 활동에서 (myActivity 1,2,3) : 다음과 같은 값을 저장합니다.

@Override
public void onResume() {
    Editor e = PreferenceManager.getDefaultSharedPreferences(this).edit();
    e.putString("last_activity", getClass().getSimpleName());
    e.commit();

    super.onResume();
}

또한 각 활동에 대한 데이터를 수동으로 저장 /복원해야합니다. 필요한 모든 값을 각 활동의 OnPause () 내부의 환경 설정에 저장 한 다음 OnResume ()에서 복원 할 수 있습니다.

다른 팁

OnSaveInstancestate ()는 장기적인 상태에서는 작동하지 않습니다. 즉, 사용자는 전화기를 다운 한 다음 나중에 불확실한 지점에서 다시 켜집니다. 상태가 전력주기에서 생존하기를 원할 경우 자신만의 장기 상태 메커니즘을 만들어야합니다.

나는 당신이 onsaveinstancestate를 구현하고 싶다고 생각하며 현재 상태를 번들에 저장할 것입니다. 해당 번들은 OnCreate에서 활동에 전달되며이를 사용하여 값을 재설정 할 수 있습니다.

http://developer.android.com/guide/topics/fundamentals.html#actstate

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top