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).
1 ответ
Также, когда я запускаю сервис из активности, он работает как положено (вызывается ServiceConnection::onServiceConnected).
startService()
не включает в себя ServiceConnection
объект.
Избавиться от обоих android:process="android.process.lifestylepp"
строки из вашего манифеста. Это может быть источником ваших трудностей, и что более важно, очень маловероятно, что вам действительно нужны два процесса и все накладные расходы, которые требуют.