[英]Android service crash when use kotlin language
我正在用 firebase 和 kotlin 編寫一個 android 應用程序。 現在我創建了一個擴展Service
類的kotlin類。
問題是,在啟動服務后,如果我關閉應用程序,它就會崩潰!
如果我用java編寫相同的代碼,一切正常! 我不明白為什么它在我使用kotlin時崩潰了?
看看我的代碼如下。
我的服務.kt
class myService : Service() {
internal var TAG = "tagForLogD"
override fun onBind(p0: Intent?): IBinder? {
return null
}
override fun onCreate() {
super.onCreate()
Log.d(TAG, "myService Created!")
}
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
return Service.START_STICKY
}
override fun onDestroy() {
super.onDestroy()
Log.d(TAG, "myService destroyed")
}
}
我的服務
public class myService extends Service {
String TAG = "tagForLogD";
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate(){
super.onCreate();
Log.d(TAG, "myService Created!");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId){
return Service.START_STICKY;
}
@Override
public void onDestroy(){
super.onDestroy();
Log.d(TAG, "myService destroyed");
}
}
感謝您的支持。
Logcat拋出波紋管異常
03-10 15:13:53.847 4911-4911/net.beingup.simplechat E/AndroidRuntime: FATAL EXCEPTION: main
Process: net.beingup.simplechat, PID: 4911
java.lang.RuntimeException: Unable to start service net.beingup.simplechat.Notification.myService@11a4382f with null: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter intent
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3975)
at android.app.ActivityThread.access$2300(ActivityThread.java:218)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1842)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:7007)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter intent
at net.beingup.simplechat.Notification.myService.onStartCommand(myService.kt)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3958)
您在onStartCommand
聲明intent
為非空:
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int
指定為非空的參數為空:方法 kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,參數意圖
所以改為將其聲明為Intent?
.
如果您使用的是LifecycleService
那么這個問題是固定在AndroidX生命周期庫版本2.2.0-alpha02。
您可以覆蓋:
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int
(注意: Intent?
而不是Intent
)
Google 在androidx.lifecycle:lifecycle-service:2.2.0
修復了這個錯誤;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.