저는 홈 화면 위젯을 개발 중이며 android sqlite 데이터베이스를 사용하고 있습니다. 나는 데이터베이스 작업을 처리하기 위해 간단한 메소드 (추가, 제거, 레코드 얻기 ...)로 간단한 클래스 DBAdapter
을 구현했다. 그것은 작동하지만, 지금 나는 최선의 방법을 생각하고 있습니다.AppWidgetProvider에서 영구 객체 (예 : db 어댑터)를 어디서 저장합니까?
가장 큰 문제는 내 DBAdapter의 인스턴스를 저장하는 방법입니다. Activity를 사용하면 매우 간단합니다. onCreate
메서드에 내 DBAdapter 인스턴스를 만들고 모든 것이 잘됩니다. 하지만 지금은 그런 옵션이 없습니다. AppWidgetProvider
과 약간 IntentServices
을 사용하고 있습니다. AppWidgetProvider
(BroadcastReceiver)은 onReceive
메서드를 실행하는 동안 특정 시간에만 만 존재합니다. IntentService
도 필요한 작업을 마친 후 "종료"됩니다. 그래서 어떻게 내 DBAdapter의 인스턴스를 저장할 것인가? 나는 DBAdapter의 새로운 인스턴스를 매번 생성하고 싶지 않다.
이 옵션에 대해 생각해 보았습니다. DBAdapter singleton clas를 만들거나 정적 클래스 & 메서드를 사용하고, 다른 옵션으로 DBAdapter를 sharedPreferences에 저장하거나 직렬화를 사용할 수 있습니다. 그러나 나는 오히려 묻고 싶다. 이 일을 올바르게하는 방법은 무엇입니까? 많이 Thx
thx, 나는 당신의 충고를 따를 것입니다;) – qkx
하지만, 어떻게하면 다중 서비스로부터 DB에 쓸 필요가 있습니까? 예를 들어 dataservice는 일정한 간격으로 백그라운드에서 실행되고 db에 신선한 데이터를 작성하고 전경에서 나는 사용자에 따라 몇 가지 글을 쓰고 있습니다. -이 글이 같은 시간에 (둘 다 일어나는 경우) 예외가 발생하면 'android.database'예외가 발생합니다. sqlite.SQLiteException : 오류 코드 5 : 데이터베이스 잠김'. 지금 뭐야? 자세한 내용은 다음을 참조하십시오. http://stackoverflow.com/questions/10798233/concurrent-writing-to-android-database-from-multiply-services – qkx