尝试在 android 上启动服务并获取空对象
Trying to start a service on android and get a null object
我正在为 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.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 似乎也被贬低了,有没有替代方案?
在你的Activityclass
startService(new Intent(getBaseContext(), RasPiDomBackground.class));
在您的服务中class
public class RasPiDomBackground extends Service {
/* (non-Javadoc)
* @see android.app.Service#onBind(android.content.Intent)
*/
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Let it continue running until it is stopped.
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
}
我正在为 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.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 似乎也被贬低了,有没有替代方案?
在你的Activityclass
startService(new Intent(getBaseContext(), RasPiDomBackground.class));
在您的服务中class
public class RasPiDomBackground extends Service {
/* (non-Javadoc)
* @see android.app.Service#onBind(android.content.Intent)
*/
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Let it continue running until it is stopped.
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
}