android - 使用 kotlin 语言时 Android 服务崩溃
问题描述
我正在用 firebase 和 kotlin 编写一个 android 应用程序。现在我创建了一个扩展类的kotlinService
类。
问题是,启动服务后,如果我关闭应用程序,它就会崩溃!
如果我用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")
}
}
我的服务.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)
解决方案
您在以下声明intent
为非空onStartCommand
:
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int
指定为非空的参数为空:方法 kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数意图
所以改为将其声明为Intent?
.
推荐阅读
- java - 我应该如何在 android 中更改滑动写入活动?
- amazon-web-services - 根据条件键创建 RDS 实例时出错
- python - 试图做一个游标锁定,由于未知原因无法工作
- data-warehouse - 类型2 渐变维度和查询某个时间点的历史数据
- python - 超过 64 位的 Python Bitboard 使用 Numpy lib
- java - rxread java 从不停止信息
- javascript - 带有 $set agreggation、自引用和数组成员的 Mongo updateMany 给出空数组
- c# - MongoDB 组到 C# API
- vue.js - 插槽标头 vuetify 2.0
- javascript - 仅在客户端导出 CSV 是一种不好的做法吗?