2014-07-01 3 views
-1

나는 사용자가 예약 된 다운로드를 허용하는 응용 프로그램에서 일하고 있습니다 (사용자는 여러 링크를 선택할 수 있고 특정 시간 (수 주일 걸릴 수도 있음) 할 때 AlarmManager는 나는 사용자의 선택 링크를 저장합니까 방법은 DownloadService 그래서안드로이드 애플 리케이션이 닫힌 경우에도 데이터 배열을 저장하는 방법

전화 방송, 응용 프로그램이 닫힐 때조차? 내가 된 SharedPreferences를 시도

. 이러한 링크는 단지 ArrayList를 할 필요가 있다고 생각하지만 그것은 단지 나를 수 to putInt, putBoolean ... 또한 onSaveInstanceState/onRestoreInstanceState에 대해서도 읽었지만 앱이 닫히면 saveInstanceState도 사라졌습니다.

어떻게하면됩니까?

Editor edit = prefs.edit(); 
edit.putInt("list_size", urlsList.size()); 
for(int i=0;i<urlsList.size(); i++) 
    edit.putString("url_" + i, urlsList.get(i)); 
edit.commit(); 

가져 URL을 : 당신이 ArrayList<String> urlsList;

저장하는 URL이있는 경우

+0

된 SharedPreferences는 문자열도 저장할 수 있습니다 http://developer.android.com /reference/android/content/SharedPreferences.Editor.html#putString – panini

+0

putExtra()를 사용하면 문자열을 저장할 수 있습니다. –

+0

이 링크를 사용해보십시오 http://stackoverflow.com/questions/7361627/how-can-write-code-to-make-sharedpreferences-for-array-in-android/7361989#7361989 – Hariharan

답변

1

를 대단히 감사합니다

int size = prefs.getInt("list_size", 0); 
ArrayList<String> retrievedUrls = new ArrayList<String(); 
for(int i=0; i<size; i++) 
    retrievedUrls.add(prefs.getString("url_" + i, null)); 
+0

이 접근법의 문제점은 환경 설정을 오염시키는 것입니다. 예를 들어, 100 개의 항목이있는 배열을 저장 한 다음 축소합니다. 2. 먼저 정리하지 않으면 환경 설정에 100 개의 항목이 생깁니다. – Aniruddha

+0

확실합니다. 그러나 그것은 할 수 있습니다. 이상적인 상황에서 그는 sqlite 데이터베이스를 사용해야합니다. –

+0

sqlite 데이터베이스 솔루션을 명확하게 설명해 주시겠습니까? 위의 해결책은 일을 완료하지만 내 SharedPreference 파일을 완전히 엉망으로 만든다. 감사합니다. –

관련 문제