【发布时间】:2016-04-14 12:52:21
【问题描述】:
我正在为android创建一个后台服务,所以我打电话:
startService(new Intent(this, RasPiDomBackground.class));
服务代码:
public class RasPiDomBackground extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Toast.makeText(this, "Service created!", Toast.LENGTH_LONG).show();
}
@Override
public void onDestroy() {
Toast.makeText(this, "Service stopped", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(this, "Service started by user.", Toast.LENGTH_LONG).show();
}
}
我收到一个对我来说毫无意义的错误.....
1928-1928/nl.digicre8.raspidom W/System.err﹕ java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
03-23 16:20:22.902 1928-1928/nl.digicre8.raspidom W/System.err﹕ at android.content.ContextWrapper.getPackageName(ContextWrapper.java:131)
03-23 16:20:22.902 1928-1928/nl.digicre8.raspidom W/System.err﹕ at android.content.ComponentName.<init>(ComponentName.java:77)
03-23 16:20:22.902 1928-1928/nl.digicre8.raspidom W/System.err﹕ at android.content.Intent.<init>(Intent.java:3996)
03-23 16:20:22.902 1928-1928/nl.digicre8.raspidom W/System.err﹕ at nl.digicre8.raspidom.RasPiDomAPI.CallAction(RasPiDomAPI.java:149)
03-23 16:20:22.905 1928-1928/nl.digicre8.raspidom W/System.err﹕ at nl.digicre8.raspidom.MainActivity.LocationService(MainActivity.java:208)
03-23 16:20:22.907 1928-1928/nl.digicre8.raspidom W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
03-23 16:20:22.907 1928-1928/nl.digicre8.raspidom W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
03-23 16:20:22.907 1928-1928/nl.digicre8.raspidom W/System.err﹕ at android.view.View$1.onClick(View.java:4002)
03-23 16:20:22.907 1928-1928/nl.digicre8.raspidom W/System.err﹕ at android.view.View.performClick(View.java:4756)
03-23 16:20:22.907 1928-1928/nl.digicre8.raspidom W/System.err﹕ at android.view.View$PerformClick.run(View.java:19749)
03-23 16:20:22.907 1928-1928/nl.digicre8.raspidom W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:739)
03-23 16:20:22.907 1928-1928/nl.digicre8.raspidom W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
03-23 16:20:22.909 1928-1928/nl.digicre8.raspidom W/System.err﹕ at android.os.Looper.loop(Looper.java:135)
03-23 16:20:22.909 1928-1928/nl.digicre8.raspidom W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5221)
03-23 16:20:22.909 1928-1928/nl.digicre8.raspidom W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
03-23 16:20:22.909 1928-1928/nl.digicre8.raspidom W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
03-23 16:20:22.909 1928-1928/nl.digicre8.raspidom W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
03-23 16:20:22.909 1928-1928/nl.digicre8.raspidom W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
03-23 16:20:22.969 1928-1977/nl.digicre8.raspidom W/EGL_emulation﹕ eglSurfaceAttrib not implemented
03-23 16:20:22.969 1928-1977/nl.digicre8.raspidom W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa5984f20, error=EGL_SUCCESS
以前有人遇到过这个问题吗? onStart 似乎也被贬低了,有替代方法吗?
【问题讨论】:
-
使用
onStartCommand()而不是onStart(Intent intent, int startid)。onStartCommand()在另一个组件(活动,...)启动服务时调用。 -
改变了 onStart 但 sill 给出了同样的错误