试图启动Android上的服务,并得到一个空对象(Trying to start a service

2019-10-22 08:44发布

我创建的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似乎depricated,有没有替代的呢?

Answer 1:

在你的Activity类

startService(new Intent(getBaseContext(), RasPiDomBackground.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();
     }
}


文章来源: Trying to start a service on android and get a null object