Проблема Android bindService - PullRequest
       14

Проблема Android bindService

2 голосов
/ 18 февраля 2010

У меня проблема с bindService. В моей деятельности у меня есть следующий код:

private ServiceConnection mConnection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className,
            IBinder service) {
        mService = IPrimary.Stub.asInterface(service);
    }

    public void onServiceDisconnected(ComponentName className) {
        mService = null;
    }
};
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mContext = this;
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.login);
    mApi = new ApiRequest(SIGNIN_METHOD);
    boolean isConnected = bindService(new Intent(IPrimary.class.getName()),
            mConnection, Context.BIND_AUTO_CREATE);

Но isConnected равняется false каждый раз.

В моем файле манифеста у меня есть:

        <service android:name=".DownloaderService">
  <intent-filter>
<action android:name=".IPrimary" />

я не понимаю проблемы. В logcat появляется:

I / ActivityManager (52): Отображаемая активность com.touristeye.code / .LogIn: 485918 мс (всего 913151 мс)

Спасибо

Ответы [ 2 ]

3 голосов
/ 18 февраля 2010

Разверните, что action:name будет полным значением в элементе <action>. Возможно, сокращенная точка с префиксом работает только для компонента (например, <service>).

0 голосов
/ 05 ноября 2011

Вы не должны этого делать:

 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 для вызова и получения любой службы из этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...