1

콘텐츠 공급자를 통해 해당 db를 노출하는 동시에 로컬 SQLite DB를 만들고 채우기 위해 JSON API에 http 요청을하는 Android 앱을 작성하려고합니다.안드로이드 콘텐츠 제공 업체에서 http 요청을하려면 어떻게해야합니까?

컨텍스트 : 나는 비동기 요청을 수행하고 db에 직접 작성한 AsyncTaskLoader의 사용자 지정 버전을 사용하여 콘텐츠 공급자없이 먼저 작업하도록했습니다.

콘텐츠 공급자와 함께 작동 시키려고 할 때 CustomAsyncTaskLoader를 없애려고 했으므로 CursorLoader를 사용할 수있었습니다. 콘텐츠 공급자의 onCreate() 메서드 내에서 초기 http 요청을 비동기 작업으로 만들었지 만 문제가 발생한지 몇 시간이 지나면 주 UI 스레드 나 onPostExecute에서 비동기 작업을 호출해야하는 것처럼 보입니다) 메서드가 호출되지 않습니다. 이에 대한 답을 찾고

이 모든 시간

내가 사전에있는 모든 도움을 주셔서 감사합니다 ...이 할 수있는 더 좋은 방법이있을 것으로 추측 저를지도한다.

답변

0

누락 된 구성 요소는 Sync Adapter입니다. 내부 서비스 (예 : 웹 서버)에서 데이터를 전송하여 콘텐츠 공급자에 삽입하는 데 사용됩니다. 또한 사용자 계정을 만들고 중앙에서 Account Authenticator 인증을 처리 할 수있는 기능을 제공합니다 (기능이 필요하지 않은 경우 확실히 stub Authenticator을 만들 수 있음).

인증 코드/콘텐츠 공급자/동기화 어댑터를 작성한 후에는 프로그래밍 방식으로 create an account을 사용할 수 있습니다 (이름이 '백그라운드 동기화'와 유사하더라도). run the sync adapter으로 콘텐츠 공급자에 데이터를로드 할 수 있습니다. 처음 실행하는 경우 run it on demand :

Account account; // Account created by your application 
String AUTHORITY; // AUTHORITY associated with your Content Provider 
Bundle settingsBundle = new Bundle(); 
// Set the flags to make it run right now 
settingsBundle.putBoolean(
     ContentResolver.SYNC_EXTRAS_MANUAL, true); 
settingsBundle.putBoolean(
     ContentResolver.SYNC_EXTRAS_EXPEDITED, true); 
// Request the sync, causing the Sync Adapter's onPerformSync to be called 
ContentResolver.requestSync(account, AUTHORITY, settingsBundle); 
관련 문제