【发布时间】:2013-08-16 04:33:46
【问题描述】:
如果我尝试使用它,我会得到NullPointerException。如果移出构造函数,它可以正常工作。所以,我很好奇发生了什么事。
代码如下:
package com.example.nullptrservice;
import android.app.Service;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.IBinder;
import android.util.Log;
public class MyService extends Service {
public MyService() {
super();
PackageManager pm = this.getPackageManager();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId){
Log.i("MyService", "---------- started --------");
return Service.START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) { return null; }
}
这是 logcat 输出,当我手动运行服务时:
D/Android 运行时(4174): D/AndroidRuntime(4174):AndroidRuntime START com.android.internal.os.RuntimeInit D/AndroidRuntime(4174):CheckJNI 关闭 D/AndroidRuntime(4174):调用主条目 com.android.commands.am.Am D/dalvikvm(4184):后期启用 CheckJNI D/AndroidRuntime(4174):关闭虚拟机 I/ActivityManager(148):为服务 com.example.nullptrservice/.MyService 启动 proc com.example.nullptrservice:pid=4184 uid=10066 gids={} I/AndroidRuntime(4174):注意:附加线程“Binder Thread #3”失败 D/dalvikvm(4174):GC_CONCURRENT 释放 103K,81% 释放 489K/2560K,暂停 1ms+1ms D/jdwp(4174):收到唤醒信号,退出选择 D/dalvikvm(4174):调试器已分离;对象注册表有 1 个条目 D/AndroidRuntime(4184):关闭虚拟机 W/dalvikvm(4184):threadid=1:线程退出但未捕获异常(组=0x409ee1f8) E/AndroidRuntime(4184):致命异常:主要 E/AndroidRuntime(4184):java.lang.RuntimeException:无法实例化服务 com.example.nullptrservice.MyService:java.lang.NullPointerException E/AndroidRuntime(4184): 在 android.app.ActivityThread.handleCreateService(ActivityThread.java:2237) E/AndroidRuntime(4184): 在 android.app.ActivityThread.access$1600(ActivityThread.java:123) E/AndroidRuntime(4184): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201) E/AndroidRuntime(4184): 在 android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime(4184):在 android.os.Looper.loop(Looper.java:137) E/AndroidRuntime(4184): 在 android.app.ActivityThread.main(ActivityThread.java:4424) E/AndroidRuntime(4184): 在 java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(4184):在 java.lang.reflect.Method.invoke(Method.java:511) E/AndroidRuntime(4184):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) E/AndroidRuntime(4184):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) E/AndroidRuntime(4184):在 dalvik.system.NativeStart.main(本机方法) E/AndroidRuntime(4184):由:java.lang.NullPointerException引起 E/AndroidRuntime(4184):在 android.content.ContextWrapper.getPackageManager(ContextWrapper.java:86) E/AndroidRuntime(4184):在 com.example.nullptrservice.MyService.(MyService.java:12) E/AndroidRuntime(4184):在 java.lang.Class.newInstanceImpl(本机方法) E/AndroidRuntime(4184):在 java.lang.Class.newInstance(Class.java:1319) E/AndroidRuntime(4184): 在 android.app.ActivityThread.handleCreateService(ActivityThread.java:2234) E/AndroidRuntime(4184): ... 10 更多Android 4.0.3
【问题讨论】:
标签: android