mdu*_*ucc 3 android android-service kotlin
我想启动一个服务,我使用:
\n\ninner class HomeService : Service() {\n override fun onBind(intent: Intent?): IBinder? {\n return null\n }\n\n override fun onCreate() {\n super.onCreate()\n }\n\n override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {\n notification(light.toString())\n return START_STICKY\n }\n\n override fun onDestroy() {\n super.onDestroy()\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n启动它:
\n\nval i = Intent(this@Main3Activity, HomeService()::class.java)\nstartService(i)\nRun Code Online (Sandbox Code Playgroud)\n\n我的应用程序崩溃后,logcat 返回:
\n\n\n\n\njava.lang.Class\n 没有零参数构造函数\n 在 android.app.ActivityThread.handleCreateService(ActivityThread.java:3201)\n 在 android.app.ActivityThread.-wrap5(ActivityThread.java)\n 在 android. app.ActivityThread$H.handleMessage(ActivityThread.java:1586)\n 在 android.os.Handler.dispatchMessage(Handler.java:102)\n 在 android.os.Looper.loop(Looper.java:154)\n在 android.app.ActivityThread.main(ActivityThread.java:6186)\n 在 java.lang.reflect.Method.invoke(本机方法)\n 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit. java:889)\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)\n 引起:java.lang.InstantiationException: java.lang.Class\n 没有零参数构造函数\n在 java.lang.Class.newInstance(本机方法)\n 在 android.app.ActivityThread.handleCreateService(ActivityThread.java:3198)\n 在 android.app.ActivityThread.-wrap5(ActivityThread.java)\xc2\xa0\ n 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1586)\xc2\xa0\n 在 android.os.Handler.dispatchMessage(Handler.java:102)\xc2\xa0\n 在 android.os。 Looper.loop(Looper.java:154)\xc2\xa0\n 在 android.app.ActivityThread.main(ActivityThread.java:6186)\xc2\xa0\n 在 java.lang.reflect.Method.invoke(本机方法)\xc2\xa0\n 位于 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)\xc2\xa0\n 位于 com.android.internal.os.ZygoteInit.main(ZygoteInit.java :779)
\n
我应该怎么办?
\nHomeService()您通过写下创建代码来手动创建实例Intent。创建服务是框架的任务,您可以传递它的类而不创建实例:
val i = Intent(this@Main3Activity, HomeService::class.java)
startService(i)
Run Code Online (Sandbox Code Playgroud)
更新:
除了上述之外,你的类也不能是内部类。它可以嵌套,但不能是内部类,因为它们保存对其所在类的引用。这意味着系统无法自行创建服务的实例 - 它无法提供外部类供其引用。
| 归档时间: |
|
| 查看次数: |
7940 次 |
| 最近记录: |