Una domanda semplice. Succede che ricevo ancora i ricevitori di trasmissioni registrati dopo che ho forzato l'interruzione dell'applicazione?Posso ancora ricevere l'intento del destinatario della trasmissione dopo che ho forzato la mia app su Android?
risposta
se i destinatari sono registrati su AndroidManifest, allora sì, l'app lo riceverà comunque. D'altra parte, se si sta registrando tramite codice (in servizio/attività), l'app non lo riceverà
Accade forse che ricevo ancora i ricevitori di trasmissione registrati dopo aver forzato l'arresto dell'applicazione?
Su Android 3.1+, n. Una volta che l'utente ha interrotto forzatamente la tua applicazione, non riceverai più trasmissione Intents
, di alcun tipo, finché l'utente non avvierà manualmente una delle tue attività.
Sai se ci sono soluzioni alternative a questo? –
@MikeT: l'avvio manuale dell'utente di una delle attività * è * la "soluzione alternativa". – CommonsWare
Ok, buono a sapersi! Ma perché? Per dare all'utente un maggiore controllo sulle app? Inoltre, mi chiedo: queste app taskmanager chiamano anche questo force-stop quando si libera la memoria?O usano metodi meno invasivi per uccidere un processo? – Peterdk
Non devi aggiungere FLAG_INCLUDE_STOPPED_PACKAGES all'intenzione del destinatario di avviare la tua attività o il tuo servizio. Devi aggiungerlo all'intento che usi per sendBroadcast. Significato, è necessario aggiungerlo all'intento dell'applicazione che richiama la trasmissione.
Questo è come si dovrebbe attivare il ricevitore da un'altra applicazione:
Intent intent = new Intent("com.xxx.my_filter_intent");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
this.sendBroadcast(intent);
Se si dispone di alcun controllo su questa trasmissione (ad esempio se si tratta di una trasmissione di sistema) e non v'è alcuna bandiera all'interno - quindi la tua app non verrà attivata da questa trasmissione se è in stato di arresto forzato.
Per saperne di più qui: http://developer.android.com/about/versions/android-3.1.html#launchcontrols
usare il mio metodo se si desidera avviare un'applicazione nascosta per appena prima volta che faccio un'attività Launcher trasparente come questo
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/Theme.Transparent"
android:excludeFromRecents="true"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Così faccio l'app nascosta nel programma di avvio inserendo questo codice in oncreat()
PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, MainActivity.class);
p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
Quindi io uso questo codice per l'icona spettacolo app sul lanciatore e farlo girare in grado, classe di servizio che utilizzano la trasmissione di avvio ricevitore e in connessione di rete di classe ricevitore di broadcast troppo (autostart.java e networkConnectinCheck.java):
PackageManager p = context.getPackageManager();
ComponentName componentName = new ComponentName(context, MainActivity.class);
p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Ora posso eseguire l'app per la prima volta da mani dell'utente e dopo questo utilizzo il mio ricevitore per l'app di pranzo in qualsiasi momento.
- 1. annullare la registrazione del destinatario della trasmissione registrato tramite manifest
- 2. Il destinatario della trasmissione chiama due volte
- 3. Ottieni l'ID SMS dal destinatario della trasmissione
- 4. Posso interrompere Android dall'uccidere la mia app?
- 5. Impossibile ricevere trasmissione in ICS
- 6. Posso cambiare la categoria della mia app su iTunes Connect?
- 7. Non riesco a ricevere la trasmissione sullo stato della batteria?
- 8. Come posso mantenere la mia app inattiva?
- 9. Salva un video che ho registrare nella mia app
- 10. Trasmissione dei dati allo stream scrivibile che non è ancora pronto per ricevere i dati
- 11. Come posso simulare la chiusura della mia app Metro?
- 12. Posso disabilitare systemui dalla mia app Android?
- 13. Aggiornamento forzato della cache dopo l'implementazione
- 14. Riavviare la mia app PhoneGap programmaticamente
- 15. Controlla se la mia app è in esecuzione su Android
- 16. Come avviare app Android all'interno della mia applicazione in Android?
- 17. Come concedo i permessi della mia app sulle pagine o sui gruppi che ho creato?
- 18. Dove posso trovare la versione yii della mia app yii?
- 19. Come posso controllare la frequenza fotogrammi della mia app?
- 20. android: come posso aprire un'altra app dalla mia app?
- 21. perché la mia app è ancora visibile nel task manager dopo averla terminata
- 22. Come avviare la mia app meteo su un dispositivo Android?
- 23. Come posso accedere alla versione alpha della mia app Android su Google Play?
- 24. C'è un linguaggio di scripting che posso incorporare nella mia app Java su Android
- 25. Come posso avviare la pagina delle impostazioni di accessibilità della mia APP in Android?
- 26. Come ricevere pacchetti di trasmissione UDP nell'app Chrome in esecuzione su Android
- 27. Come testare la mia app sul mio telefono? Ho Eclipse con il plug-in Android
- 28. Posso ricevere altre chiamate di chiusura di apertura dell'app nella mia app
- 29. App Android per tablet che mostra ancora "Progettato per telefoni"
- 30. App iOS Enterprise - Come posso assicurarmi che la mia app venga eseguita in background?
Questo non sembra più il caso di 3.1. Vedi la risposta di @ CommonsWare di seguito. –
è una risposta folle .. perché accettare questo .. –
@ZalaJanaksinh non era "sciocco" il tempo in cui è stato risposto - solo se conosci la storia di Android :) – waqaslam