2013-05-11 3 views
0

Iam이하는 일은 새로운 활동으로 넘어 가서 AsyncTask를 시작하고 사용자 점수를 서버에 제출하는 간단한 게임입니다. 서버는 일련의 점수 (몇 가지 나보다는 나보다 더 나쁘다.)한 화면에 대한 반영구적 데이터

내가 원하는 것은이 배열을 유지하지만이 화면에 대해서만 사용자가 특정 화면 데이터를 잊어 버리게됩니다. 게임은 항상 화면을 회전시킬 필요가 없기 때문에 화면 회전에 대해 걱정할 필요가 없지만 사용자가 앱에서 뛰어 내릴 수 있으며 앱이 다시 돌아 오면 애플리케이션이 종료되지 않고 화면에서 다시 시작해야하지만 데이터가 사라집니다. 비동기 작업이 다시 시작됨) 데이터를 어떻게 든 유지해야하지만 데이터베이스에 쓰는 것이 너무 많은 것처럼 보였습니다. 먼저 삭제하는 것에 대해 걱정할 필요가있었습니다.

그래서이 상황에서 데이터를 유지하기 위해 어떤 기술을 사용하겠습니까? 응용 프로그램 개체의 멤버 변수로? 임시 테이블? 저장된 인스턴스 (savedInstanceState에 arraylist를 두는 것이 고통이 되더라도)

감사!

+0

아마도 SharedPreferences입니까? –

+0

arrayList의 종류는 무엇입니까? –

답변

1

onSaveInstanceState을 사용하는 것이 좋습니다. 이 경우를 위해 설계되었습니다.

사실 그것은 고통이 아닙니다. putParcelableArrayList 이상 getParcelableArrayListonCreate에 사용하십시오.

데이터 클래스는 String (이름)과 int (점수) 결정 Parcelable 당신이 전에 그것을 구현하지 않은 경우에 좋은 운동입니다 유지하는 것만 큼 간단합니다.

+0

네,하지만 사용하고 싶지만 어떻게 든 savedInstance는 null입니다. 그 문제에 대해 elsewere를 봐야만합니다. – urSus

+0

onCreate (Bundler savedInstance)의 @VlastoBennyLava는 'savedInstance'가 처음으로 null이됩니다. 전화를 돌리거나 프로세스를 다시 생성하면 이전에 onSaveInstanceState에 추가 된 데이터가 포함됩니다. –

0

어떤 점에서는 질문이 명확하지 않습니다. 내가 원하는 무엇

이 배열을 유지하다,하지만이 화면에 대한 는 사용자가 특정 화면 데이터가 분실 될 것으로 존재한다.

이 줄에서는 activiy이 실행 중일 때만 (전경 또는 배경) 데이터를 지속하는 것으로 보입니다. 따라서이 경우 클래스 변수가 아닌 다른 위치에 데이터를 저장할 필요가 없습니다. 따라서 이것이 원하는 경우 onResume에서 asynctask를 호출 할 수 있습니다. 이 경우 onCreate에서 asynctask를 호출하십시오.

그러나 응용 프로그램을 닫은 후에도 데이터를 유지하려면 SharedPreferences를 사용하여 배열을 저장할 수 있습니다.

코드를 게시 할 수 있다면 문제를 더 쉽게 알 수 있습니다.

+0

활동이 백그라운드로 간다면, 클래스 변수가 좋지 않아 파괴 될 수 있습니다. 나는 savedInstanceState를 사용할 것이라고 생각하지만, 어떤 이유로 지금은 나를 null이된다. 귀하의 의견을 보내 주셔서 감사합니다. – urSus