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" строки из вашего манифеста. Это может быть источником ваших трудностей, и что более важно, очень маловероятно, что вам действительно нужны два процесса и все накладные расходы, которые требуют.

Другие вопросы по тегам