2015-02-03 2 views
0

다음과 같은 것이 가능한지 알고 싶습니다. 데이터베이스를 변경하는 활동과 서비스를 원한다면 활동이 실행을 멈추더라도 서비스가 계속해서 데이터베이스의 내용에 액세스하고 변경할 수 있습니까?안드로이드에서 서비스의 SQLite 데이터베이스 사용하기

일단 서비스가 닫히면 서비스는 독립적으로 실행할 수 있지만 데이터베이스 액세스를 계속할 수 있는지 확실하지 않습니다.

+1

안드로이드의 서비스에서 문제가없는 액세스 데이터베이스가 있습니다. –

+0

서비스에서 데이터베이스에 항상 액세스 할 수 있으며, 해당 의무 사항에 대해 실행할 응용 프로그램이 필요하지 않습니다. – GrIsHu

+1

[검색] (http://stackoverflow.com/questions/4242165/how-to-use-sqlite-from-services-in-android)? –

답변

7

보고 시도하는 것은 예, 응용 프로그램이 백그라운드로 이동하거나 응용 프로그램이 최근에서 강타를 사용하여 죽인 경우에도, 귀하의 서비스에 SQLite는 데이터베이스를 사용할 수 있습니다 응용 프로그램 목록.

아주 간단하게 demo을 만들었습니다.

빈 테이블이있는 데이터베이스입니다. 그리고 10 초마다 테이블에 서비스 기록이 있는지 여부가 표시됩니다. 응용 프로그램이 백그라운드에 있거나 살해 된 경우에도 그 토스트 메시지를 전합니다.

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    final Handler mHandler = new Handler(); 
    mRunnable = new Runnable() { 
     @Override 
     public void run() { 
      MyDBHelper myDBHelper = new MyDBHelper(getApplicationContext()); 
      boolean isInfoAvailable = myDBHelper.isAnyInfoAvailable(getApplicationContext()); 
      Toast.makeText(getApplicationContext(), String.valueOf(isInfoAvailable), Toast.LENGTH_LONG).show(); 
      mHandler.postDelayed(mRunnable, 10 * 1000); 
     } 
    }; 
    mHandler.postDelayed(mRunnable, 10 * 1000); 
    return super.onStartCommand(intent, flags, startId); 
} 

당신이 있는지 확인해야합니다 모든

은 다음과 같습니다

서비스는 백그라운드에서 실행해야합니다.

매니페스트 파일에서 서비스를 위해 플래그 android:stopWithTask="false"을 사용하십시오.

<service 
    android:name=".MyService" 
    android:enabled="true" 
    android:exported="true" 
    android:stopWithTask="false"> 
</service> 

희망이 있습니다. :)

+0

나를 위해 일해 줘서 고마워. – Codelover

관련 문제