Вы не должны этого делать:
boolean isConnected = bindService(new Intent(IPrimary.class.getName()), mConnection, Context.BIND_AUTO_CREATE);
Пожалуйста, укажите код, когда вы обрабатываете услугу в частном порядке ServiceConnection mConnection = new ServiceConnection() {}
... Я перезваниваю, и у вас есть служба, чтобы обработать там. Мы неконечно, когда услуга действительно связана, пока мы не получим обратный вызов от ServiceConnection
Вот поток
Создайте свое намерение вызвать службу.Вы можете запустить startService () или BindService () с помощью BIND_AUTO_CREATE
. После того, как сервис связан, он создаст туннель для общения с клиентами, который является интерфейсом IBinder.Это используется вашей реализацией интерфейса AIDL и возвращает IBinder в
private final MyServiceInterface.Stub mBinder = new MyServiceInterface.Stub() {
public int getNumber() {
return new Random().nextInt(100);
}
};
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(this, "Service OnBind()", Toast.LENGTH_LONG).show();
return mBinder;
}
Как только он возвращает mBinder, ServiceConnection, который вы создали в клиенте, будет вызван обратно, и вы получите интерфейс службы, используя эту
mConnection = new ServiceConnection() {
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
mService = MyServiceInterface.Stub.asInterface(service);
};
Теперь у вас есть интерфейс mService для вызова и получения любой службы из этого