android - onServiceConnected 未被调用,出现空指针异常

标签 android android-service

我开发了一个绑定(bind)服务作为一个单独的项目,我正在尝试从客户端访问该服务,但不知何故我得到了

AndroidRuntime: FATAL EXCEPTION: main
08-08 12:00:40.898  3206  3206 E AndroidRuntime: java.lang.NullPointerException
08-08 12:00:40.898  3206  3206 E AndroidRuntime:    at    com.test.binder.BinderServiceActivity.onClick(BinderServiceActivity.java:61)
08-08 12:00:40.898  3206  3206 E AndroidRuntime:    at android.view.View.performClick(View.java:3526)
08-08 12:00:40.898  3206  3206 E AndroidRuntime:    at android.view.View$PerformClick.run(View.java:14139)
08-08 12:00:40.898  3206  3206 E AndroidRuntime:    at android.os.Handler.handleCallback(Handler.java:605)
08-08 12:00:40.898  3206  3206 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:92)
08-08 12:00:40.898  3206  3206 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:137)

08-08 12:00:40.898 3206 3206 E AndroidRuntime:在 android.app.ActivityThread.main(ActivityThread.java:4725) 08-08 12:00:40.898 3206 3206 E AndroidRuntime:在 java.lang.reflect.Method.invokeNative( native 方法)

我怀疑没有调用 onServiceConnected。谁能帮我解决这个问题。

提前致谢

请在下面找到客户端代码:

public class BinderServiceActivity extends Activity implements OnClickListener {
private static final String TAG = "LogActivity";
ILogService logService;
LogConnection conn;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// Request bind to the service
conn = new LogConnection(); // 
Intent intent = new Intent("com.test.binder.ILogService"); // 
intent.putExtra("version", "1.0"); // 
bindService(intent, conn, Context.BIND_AUTO_CREATE); // 

// Attach listener to button
((Button) findViewById(R.id.button1)).setOnClickListener(this);
}

class LogConnection implements ServiceConnection { // 

public void onServiceConnected(ComponentName name, IBinder service) { // 
  logService = ILogService.Stub.asInterface(service); // 
  Log.i(TAG, "connected");
}

public void onServiceDisconnected(ComponentName name) { // 
  logService = null;
  Log.i(TAG, "disconnected");
}

}

public void onClick(View button) {
try {

  logService.log_d("LogClient", "Hello from onClick()"); // 
  Message msg = new Message(Parcel.obtain()); // 
  msg.setTag("LogClient");
  msg.setText("Hello from inClick() version 1.1");
  logService.log(msg); // 
} catch (RemoteException e) { // 
  Log.e(TAG, "onClick failed", e);
}

}

@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroyed");

unbindService(conn); // 

logService = null;
}
}

最佳答案

由于您没有发布包括服务在内的完整源代码,因此很难解决您的问题。您可以下载 Demo Source通过示例了解每种类型的服务绑定(bind)并快速了解。该演示包含使用三种类型的服务绑定(bind)

1.) Binding using IBinder

2.) Binding using Messenger

3.) Binding using AIDL

关于android - onServiceConnected 未被调用,出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11844920/

相关文章:

Android:在 android 中使用 XML 进行动画翻转动画

java - 如何知道从动态添加的 View 中单击了哪些切换按钮?

安卓服务 : What happen at the end of Activity life?

android - 当 Activity 在前台时接收明确的 Intent

Android 在出错时显示来自服务的对话框

android - 如何以编程方式在 MI 4i 安全应用程序中为我的应用程序启用自动启动选项?

java - java中的阻塞

android - 退出应用程序时未保存 SharedPreferences

android - 在 Android 中单击按钮后使布局出现动画

android - aidl 中的 Parcelable 继承