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 回答