2

우리는 우리 서버에서 주기적으로 많은 정보를 백그라운드로 동기화하고 SQLite DB에 저장해야하는 문제가 있습니다.안드로이드에서 동기화 서비스를 설계하는 방법

나는 그것을 보는 방식으로 약간의 otpions가 있습니다. 모든 파급 효과를 완전히 이해하고 있는지는 확실하지 않습니다.

1) START_STICK 인 프로세스 서버가 onStartCommand에서 반환되고 addPeriodicSyncs (아마도 Application#onCreate에 있음)가 있습니다.

2) START_STICKY 인 프로세스 서버가있어 타이머 작업을 큐에 저장하고 주기적으로 데이터베이스를 업데이트합니다.

3) Service을 자체 프로세스로 실행하고 SQLite DB에 기록하십시오.

그래서, 여기에 질문이 있습니다 :

a)는 SyncAdapter를 가진 옵션 # 1과 # 2 배제 하는가? SyncAdapter를 실행하면 어떤 이점이 있습니까? (Service에 새로운 Thread을 시작해야 HTTP 요청을 할 수 없습니다.)

b) 응용 프로그램이 파괴 된 채로 살아남을 수 있습니까? 그렇다면 전체 응용 프로그램을 가져올 수 있습니까?

c) # 3으로 내 SQLite DB에 쓸 수 있습니까? 나는 그들이 동일한 사용자 ID 권한을 가지고있을 것이므로 예를 추측하고 있습니까?

d) # 3과 주요 응용 프로그램 프로세스간에 앞뒤로 이야기하는 가장 쉬운 방법은 무엇입니까? 방송 수신기? 그것의 대부분은 순전히 당신이하지 않는 것이

답변

-1
  1. 안드로이드 동기화 프레임 워크의 주요 장점은 알림 URI를

    전자) 그냥 일반적인 생각, 장점/단점 등 :)으로 Cursor를함으로써 처리 할 것 자체 프레임 워크를 구현해야합니다.

  2. addPeriodicSync() 동기화 설정을 시스템에 기록하면 수단이 동기화 어댑터를 주기적으로 실행하도록 Android 동기화 프레임 워크에 알립니다. 따라서 자신의 스케줄러를 구현할 필요가 없습니다. (WRITE_SYNC_SETTINGS 허가가 필요합니다.)
  3. 사용자 정의 (스텁이 아님) ContentProvider을 구현하고 그것에 CRUD를 수행하십시오. 이는 프로세스 간 통신을 관리하는 컨텐츠 제공 업체의 주요 기능 중 하나이므로 방송이 필요하지 않습니다. 대신 커서를 업데이트하려면 ContentProvider + Loader (http://developer.android.com/guide/components/loaders.html)을 사용하십시오.

콘텐츠 제공자 :

class MyContentProvider extends ContentProvider { 
    public Uri insert(...) { 
     ... 
     mDbHelper.getWritableDatabase.insert(...); 
     ... 
    } 
} 

싱크 어댑터 :

class MySyncAdapter extends AbstractThreadedSyncAdapter { 
    public void onPerformSync(...) { 
     ... 
     new ContentResolver(getContext()).insert(...); 
     ... 
    } 
} 
관련 문제