2009-10-17 4 views
4

Я пытался связать службу, которая была запущена при загрузке из активности. Код для запуска при загрузке в основном принимался из instant messenger.ServiceConnection :: onServiceConnected не вызывается, хотя Context :: bindService возвращает true?

Это определение AndroidManifest.xml для 3-х основных компонентов:

<!-- Receiver --> 
    <receiver android:name=".receiver.LifestylePPAutoStarter" 
     android:process="android.process.lifestylepp"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
    </receiver> 

    <!-- Service --> 
    <service android:name=".service.LifestylePPService" 
     android:process="android.process.lifestylepp" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="edu.gatech.lifestylepp.ILifestylePPService" /> 
      <action android:name="edu.gatech.lifestylepp.SERVICE" /> 
     </intent-filter> 
    </service> 

    <!-- Activity --> 
    <activity android:name=".app.LifestylePPActivity" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

Приемник запускает службу при загрузке без каких-либо проблем. Однако, когда я пытаюсь связать службу с моей деятельностью, Context :: bindService возвращает true, но ServiceConnection :: onServiceConnected никогда не вызывается. Кроме того, когда я запускаю службу из своей активности, она работает как ожидалось (вызывается ServiceConnection :: onServiceConnected).

ответ

2

Кроме того, когда я запустить службу от деятельности он работает, как ожидалось (ServiceConnection :: onServiceConnected называется).

startService() не включает в себя объект ServiceConnection.

Избавьтесь от линий android:process="android.process.lifestylepp" от вашего манифеста. Это может быть источником ваших трудностей, и, что более важно, очень маловероятно, что вам действительно нужны два процесса и все накладные расходы, которые требуются.

+0

Я знаю, что startService() не включает ServiceConnection. То, что я имел в виду, это: Когда я запускаю службу из этой операции, я могу связать ее с помощью bindService (намерение, соединение, 0) без каких-либо проблем. Проблема возникает только при запуске службы с ресивера. Спасибо за ваше предложение! К сожалению, я уже пробовал запустить работу и службу в том же процессе и ничего не изменил. – kloffy

+1

Добавьте флаг BIND_AUTO_CREATE в вызов bindService(). – CommonsWare

+0

Не будет ли причиной запуска новой службы? Служба уже запущена, она была создана при загрузке ресивером. Я просто хочу связать его с деятельностью. – kloffy

Смежные вопросы