Android 当我长按Home键清除应用程序历史记录时,服务关闭

Android 当我长按Home键清除应用程序历史记录时,服务关闭,android,android-intent,android-service,Android,Android Intent,Android Service,我正在从活动启动服务。然后服务运行倒计时来启动广告 但当有人长按Home键清除我的应用程序历史记录时,它会强制在我检查Intent extras的位置停止应用程序 它在该行给出空指针异常,如下所示 public int onStartCommand(Intent intent, int flags, int startId) { if (intent.getExtras() != null && intent.hasExtra("type")) // <== NPE

我正在从活动启动服务。然后服务运行倒计时来启动广告

但当有人长按Home键清除我的应用程序历史记录时,它会强制在我检查Intent extras的位置停止应用程序

它在该行给出空指针异常,如下所示

public int onStartCommand(Intent intent, int flags, int startId) {  

if (intent.getExtras() != null && intent.hasExtra("type")) // <== NPE at this line 
        type = intent.getExtras().getString("type");
.
.
.
}

Intent
本身是
null
。当Android重新启动您的服务时,这是
START\u STICKY
的预期行为,如中所述。

您是否已从onStartCommand()返回START\u STICKY?否!如果我使用START_STICKY,那么如果有人从历史记录中清除应用程序,则不会调用
onStartCommand
?它将确保在您明确执行此操作之前,服务不会关闭。可能有用。有一件事我注意到服务显示为在设置中运行,但调用了
onStartCommand
,并显示了意图中的NPE。getExtra Line活动的onDestroy方法是否有任何可能再次启动服务的内容?但这是预期的行为吗?对onStartCommand()的调用?我没有使用START\u STICKY。它是
返回super.onStartCommand(intent、flags、startId)
@D_Vaibhav:onStartCommand()的默认返回值为
START\u
。请参阅(当前版本的源代码中的第449-452行)。@ShivamVerma:是的,因为
onStartCommand()
的默认返回值是
START\u STICKY
。我可以使用
START\u REDELIVER\u INTENT
文档说明服务不会收到具有空意图的onStartCommand(INTENT,int,int)调用吗`
java.lang.RuntimeException: Unable to start service com.main.example.AdService with null: java.lang.NullPointerException
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2660)
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at android.app.ActivityThread.access$1900(ActivityThread.java:149)
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1402)
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at android.os.Handler.dispatchMessage(Handler.java:99)
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at android.os.Looper.loop(Looper.java:153)
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at android.app.ActivityThread.main(ActivityThread.java:5000)
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at java.lang.reflect.Method.invokeNative(Native Method)
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at java.lang.reflect.Method.invoke(Method.java:511)
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at dalvik.system.NativeStart.main(Native Method)
        06-23 13:58:05.004: E/AndroidRuntime(12667): Caused by: java.lang.NullPointerException
        06-23 13:58:05.004: E/AndroidRuntime(6295): com.main.example.AdService.onStartCommand(AdService.java:83)
        06-23 13:58:05.004: E/AndroidRuntime(12667):    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2643)