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
上停止服务。谢谢汤姆,这就是答案,除非我不能批准评论。