1

データベースを削除する直前に、サービスのペアを停止する必要があります。サービスはデータベースにアクセスしており、停止しないとアプリがクラッシュします。

そのようです:

stopService(new Intent(CurrentClass.this, FirstService.class));
stopService(new Intent(CurrentClass.this, SecondService.class));
CurrentClass.this.deleteDatabase(MyDatabaseHelper.DATABASE_NAME);

私の知る限り、問題はstopServiceが非同期であるということです。データベースが削除される前にサービスを強制的に停止するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

2

私が知る限り、サービスが破壊される正確なタイミングは Android 次第であり、すぐには発生しない可能性があります..これを念頭に置いて.. .そしてそれにアクセスします...あなたが思うなら..データベースが常にサービスで利用可能かどうかをチェックするべきではありません...そしてあなたが呼び出す前に

stopService(new Intent(CurrentClass.this, FirstService.class));
stopService(new Intent(CurrentClass.this, SecondService.class));

サービスが停止するように求められているというインテントをブロードキャストし、サービスでリスナーを実装し、そのリスナーの onreceive で、データベースが利用可能かどうかを確認するメソッドを開始します....このように..たとえば..

 //this is in your service..
 bool stopping=false
 .......

 if(stopping)
  {
   //check if your databse is available and access it
  }
 else{
   //access your database directly..
  }

およびブロードキャストレシーバーのオンレシーブで

   @Override
  public void onReceive(Context context, Intent intent){
  stopping=true;
   }
于 2012-04-06T04:40:51.833 に答える