Sky*_*and 3 java android android-intent android-service
我正在尝试IntentService从我的主要活动中的点击处理程序开始。我现在正在学习Intents,但还不太明白。我不确定我应该如何在这里实例化我的意图并将其传递给startService. 我不知道为什么我必须做这样的事情,Intent据我所知,这不会在我的服务中使用。我不知道如何调试这个问题。
来自点击回调:
\n\n this.commute = new Commute();\n\n locationService = new LocationService();\n locationService.setCommute(commute);\n // com.orm.SugarApp@8b2e18f is this.getApplicationContext() ...\n Context context = this.getBaseContext();\n System.out.println("!!!!!!!!!!!!!!!!!!!!!");\n System.out.println(context);\n Intent intent = new Intent(context, LocationService.class);\n System.out.println(locationService);\n System.out.println(intent);\n locationService.startService(intent); // <---- OFFENDING LINE\n System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@");\n\n chronometer.setBase(SystemClock.elapsedRealtime());\n chronometer.start();\n commute.start();\nRun Code Online (Sandbox Code Playgroud)\n\nlogcat 在回溯之前,没有任何对象是null...:
01-27 09:53:44.465 2718-2718/org.skyl.commutetracker I/System.out\xef\xb9\x95 !!!!!!!!!!!!!!!!!!!!!\n01-27 09:53:44.466 2718-2718/org.skyl.commutetracker I/System.out\xef\xb9\x95 android.app.ContextImpl@8b2e18f\n01-27 09:53:44.466 2718-2718/org.skyl.commutetracker I/System.out\xef\xb9\x95 org.skyl.commutetracker.services.LocationService@387dcc1c\n01-27 09:53:44.466 2718-2718/org.skyl.commutetracker I/System.out\xef\xb9\x95 Intent { cmp=org.skyl.commutetracker/.services.LocationService }\n01-27 09:53:44.466 2718-2718/org.skyl.commutetracker D/AndroidRuntime\xef\xb9\x95 Shutting down VM\n01-27 09:53:44.481 2718-2718/org.skyl.commutetracker E/AndroidRuntime\xef\xb9\x95 FATAL EXCEPTION: main\nRun Code Online (Sandbox Code Playgroud)\n\n这会导致以下回溯:
\n\nCaused by: java.lang.NullPointerException: Attempt to invoke virtual method \'android.content.ComponentName android.content.Context.startService(android.content.Intent)\' on a null object reference\n at android.content.ContextWrapper.startService(ContextWrapper.java:515)\n at org.skyl.commutetracker.MainActivity.startCommute(MainActivity.java:86)\n at org.skyl.commutetracker.MainActivity.toggleClick(MainActivity.java:67)\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0at java.lang.reflect.Method.invoke(Native Method)\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0at java.lang.reflect.Method.invoke(Method.java:372)\nRun Code Online (Sandbox Code Playgroud)\n
您不想在第二行实例化 LocationService。
您可能需要使用以下其中一项:
context.bindService(intent, serviceConnection, boolean);
Run Code Online (Sandbox Code Playgroud)
或者
context.startService(intent);
Run Code Online (Sandbox Code Playgroud)
对于您的 IntentService,您需要使用 startService。绑定服务与意图服务不同。
另外,如果您想将通勤传递到意图服务中,您可能希望将其作为额外的传递到意图中。
intent.putExtra(String key, Parcelable item)
Run Code Online (Sandbox Code Playgroud)
putExtra 已重载,因此只要 Commute 对象实现所需的接口之一,它就应该可以正常工作。有关 Intent 对象的更多信息可以在http://developer.android.com/reference/android/content/Intent.html找到
您可以在此处找到有关服务的更多信息http://developer.android.com/guide/components/services.html
| 归档时间: |
|
| 查看次数: |
4055 次 |
| 最近记录: |