我有一个示例,我绑定到一个服务,这个工作。当我尝试将绑定到服务的代码移动到库时,对BindService的调用失败并出现异常。我可以看一下任何想法或示例代码吗?
这是绑定调用:
boolean rc = bindService(MyIntent, mConnectionC, Context.BIND_AUTO_CREATE);
这是例外日志:
04-02 17:28:36.896: W/System.err(1567): java.lang.NullPointerException
04-02 17:28:36.947: W/System.err(1567): at android.content.ContextWrapper.bindService(ContextWrapper.java:337)
04-02 17:28:36.976: W/System.err(1567): at com.Locification.LocificationToolKit.InitLocification(LocificationToolKit.java:280)
04-02 17:28:36.996: W/System.err(1567): at com.LocificationClient.LocificationClientActivity.onCreate(LocificationClientActivity.java:49)
04-02 17:28:37.026: W/System.err(1567): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-02 17:28:37.046: W/System.err(1567): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
04-02 17:28:37.086: W/System.err(1567): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
04-02 17:28:37.106: W/System.err(1567): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
04-02 17:28:37.126: W/System.err(1567): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
04-02 17:28:37.156: W/System.err(1567): at android.os.Handler.dispatchMessage(Handler.java:99)
04-02 17:28:37.186: W/System.err(1567): at android.os.Looper.loop(Looper.java:123)
04-02 17:28:37.207: W/System.err(1567): at android.app.ActivityThread.main(ActivityThread.java:4363)
04-02 17:28:37.236: W/System.err(1567): at java.lang.reflect.Method.invokeNative(Native Method)
04-02 17:28:37.256: W/System.err(1567): at java.lang.reflect.Method.invoke(Method.java:521)
04-02 17:28:37.286: W/System.err(1567): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-02 17:28:37.356: W/System.err(1567): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-02 17:28:37.386: W/System.err(1567): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
您是否使用等效的上下文绑定?我记得绑定行为取决于你是否为活动与接收者与服务上下文调用bindService()
。
还有:什么例外?任何“由...引起的?”
编辑:NullPointerException通常意味着您已经传递了一个null,其中需要一个有效的对象。此外,异常发生在ContextWrapper中 - 大多数方法只会将调用传递给底层上下文对象。其中暗示基本上下文未正确初始化。
我看到调用发生在班级LocificationToolKit
内。 LocificationClientActivity
是LocificationToolKit
的子类吗?如果没有,您是否正确使用LocificationToolKit
参数调用Context
的构造函数?看起来你正试图从ContextWrapper
内部绑定到尚未使用非空基本上下文初始化的服务。
EDIT2:InitLocification()
不能是静态方法 - 因为那样你就无法从中调用bindService()
。因此,您在某处有一个LocificationToolKit
实例,有点像这样初始化:
LocificationToolKit LoTo = new LocificationToolKit(/*...*/);
所以你需要的是LocificationToolKit中的一个构造函数,它接受一个Context
对象并将它传递给基类:
LocificationToolKit(Context c)
{
super(c);
}
当您在LocificationToolKit
中的某处构建LocificationClientActivity
时,您需要将活动的this
指针作为上下文传递。像这样:
LocificationClientActivity
{
void onCreate(Bundle b)
{
//...
LocificationToolKit LoTo = new LocificationToolKit(this);
//...
}
}