在Activity
中我启动了一个服务
Intent serv=new Intent(this, MyService.class);
serv.putExtra("mac", "mac");
startService(serv);
在服务中,我获取参数
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String mac=intent.getExtras().getString("mac");
return super.onStartCommand(intent, flags, startId);
}
然后我杀了这个应用,应用会崩溃,服务也会崩溃。
如果我删除这一行,那么就没问题了,我杀了应用后服务还活着。
String mac=intent.getExtras().getString("mac");
为什么应用会崩溃?
最佳答案
super.onStartCommand(intent, flags, startId)
返回 START_STICKY
默认情况下标记,根据文档,这意味着:
“如果此服务的进程在启动时被终止(在从 onStartCommand(Intent, int, int) 返回后),则将其保留在启动状态但不保留此传递的 Intent 。”
由于 Intent
没有被重新传送,您在调用 intent.getExtras()
时可能会得到 NPE
。
要重新传递 Intent
,请返回 START_REDELIVER_INTENT
来自 onStartCommand()
的标志:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
...
return START_REDELIVER_INTENT;
}
关于android - 如果我在服务中获得额外服务,为什么 Android 应用程序在关闭应用程序时会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40033702/