Comment faire de l'application du récepteur de radiodiffusion de rester à l'écoute sans avoir un service qui s'exécute en arrière-plan

Je suis en train de faire une application android qui est à l'écoute wifi, changement de radiodiffusion et de faire une certaine action. Mais le problème est qu'il ne fonctionne pas lorsque le processus est tué. J'ai trouvé cette question, qui a dit qu'il ne fonctionnera pas sans une activité

Comment créer BroadcastReceiver sans Activité/Service?

Ce n'est donc pas une alternative. Donc j'ai créé une activité qui est vide. Je ne veux pas créer un service qui maintient en cours d'exécution en arrière-plan. Comment puis-je faire ma demande de rester à l'écoute, même quand il est tué. J'ai enregistré l'émission dans le manifeste.

<activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver android:name="com.background.service.BroadCastReceiver">  
        <intent-filter>
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>  
    </receiver>

C'est ma classe

public class BroadCastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    //do some action
   }
}
Service pour quoi ? En vous inscrivant dans le Manifeste est assez.
Eh bien, la onReceive n'est pas appelée lorsque l'application est tué
Comment tuer l'application? Pouvez-vous mentionner les étapes?
"Utilisé une pré-installation d'une application pour tuer tous les processus en cours d'exécution" -- utiliser une technique plus fiable, tel que la résiliation de votre processus via DDMS. Il se peut que votre appareil est en train de faire une halte pour ces processus, qui serait epically stupide, mais il arrive avec certains appareils. Au-delà, ce qui vous aide à déterminer si votre BroadCastReceiver est d'obtenir le contrôle? Aussi, avez-vous lancé cette activité au moins une fois depuis que vous avez installé l'application? Sans cela, manifeste-enregistré les récepteurs ne fonctionnent pas (ils sont dans le même "arrêté" de l'état que d'une force d'arrêt).
J'ai réussi à trouver le pourquoi et le comment reproduire le problème que je vois. C'est parce que je suis le débogage de l'application. Lorsque le débogueur est attaché, la suppression de l'application à partir de l'écran de synthèse de fait déplacer pour "Forcer l'Arrêt" état (confirmé en allant dans Paramètres > app et de voir que "Forcer l'Arrêt" de bouton est désactivé) chaque fois unique. Se produit à la fois dans l'émulateur et le réel de l'appareil. L'exécution de l'application sans attacher le débogueur n'avons pas de problèmes 🙂 j'Espère que cette info vous aide à quelqu'un!

OriginalL'auteur Alex | 2014-11-26