Android:如何从Service.onCreate抛出异常?

Android:如何从Service.onCreate抛出异常?,android,android-service,ioexception,oncreate,Android,Android Service,Ioexception,Oncreate,我有一个服务,需要在它的onCreate中做一些工作,比如打开一个文件。但是,如果存在IOException,onCreate应该失败,我如何向调用者指出这一点?该方法不会抛出任何异常。我尝试过使用stopSelf(),但显然它在创建服务之前没有效果,onStartCommand()仍然被调用,并且代码稍后会失败,因为服务设置不正确 public class MyService extends Service { @Override public void onCreate() {

我有一个
服务
,需要在它的
onCreate
中做一些工作,比如打开一个文件。但是,如果存在
IOException
,onCreate应该失败,我如何向调用者指出这一点?该方法不会抛出任何异常。我尝试过使用
stopSelf()
,但显然它在创建服务之前没有效果,
onStartCommand()
仍然被调用,并且代码稍后会失败,因为服务设置不正确

public class MyService extends Service {
  @Override
  public void onCreate() {
     try {
        // do something
     } catch (IOException ex) {
        stopSelf(); // this does nothing
        // need to show that setting up the service failed
        return;
     }         
   }
   @Override
   public int onStartCommand(Intent intent, int flags, int startId) {
      // this shouldn't be called if there was an error in onCreate
   }
}

把所有的代码放在
onStartcommand
上怎么样?因为设置只需要执行一次,所以您不能提供任何类型的异常输入或返回值,因为
服务的调用是由操作系统进行的,而不是您活动的任何部分。也许你可以添加一个布尔标志来停止服务,这在
catch
语句中是真的,它在
onStartCommand
上停止服务。谢谢汤姆,这就是答案,除非我不能批准评论。