尝试在我的活动和服务之间启动信使时遇到问题。在我的活动中,我有这个:
Messenger bluetoothServiceMessenger;
private ServiceConnection bluetoothServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
bluetoothServiceMessenger = new Messenger(service);
... }
如您所见,我正在尝试使用IBinder创建信使。在我的服务上,onBind()方法就是这个:
@Nullable
@Override
public IBinder onBind(Intent intent) {
Log.d(TAG, "BluetoothService has been started.");
return bluetoothServiceBinder;
}
public class BluetoothServiceBinder extends Binder {
public BluetoothService getService() {
return BluetoothService.this;
}
}
所以,问题是我在onServiceConnected()方法上遇到以下NullPointerException:
04-16 20:15:32.365 2117-2117/com.alejandro_castilla.heartratetest E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.alejandro_castilla.heartratetest, PID: 2117
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at android.os.Binder.queryLocalInterface(Binder.java:254)
at android.os.IMessenger$Stub.asInterface(IMessenger.java:27)
at android.os.Messenger.<init>(Messenger.java:146)
at com.alejandro_castilla.heartratetest.MainActivity$1.onServiceConnected(MainActivity.java:129)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1223)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1240)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我一直在尝试一些事情但没有任何作用。如果我不这样做,我可以确认该服务是否正常工作,所以我认为这不是绑定问题。任何帮助将不胜感激。
提前致谢。