Сбой сервиса Android при использовании языка котлин - PullRequest
1 голос
/ 10 марта 2019

Я пишу приложение для Android с Firebase и Kotlin.Теперь я создал класс kotlin , который расширяет класс Service.

Проблема в , после запуска службы, если я закрываю приложение, оно падает !

Если я пишу тот же код с java все работает нормально!Я не могу понять, почему он завис, когда я использую kotlin ?

Посмотрите мой код ниже.

myService.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")
    }
}

myService.java

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)

1 Ответ

7 голосов
/ 10 марта 2019

Вы объявили intent ненулевым в onStartCommand:

override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int

Параметр, указанный как ненулевой, имеет значение null: метод kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,параметр intent

Поэтому вместо этого объявите его как Intent?.

Причины, по которым переданный Intent будет равен NULL в onStartCommand

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...