Domanda

C'è qualcosa come un onPause() globale delle applicazioni e onResume()?

La mia attività principale in ascolto per le correzioni GPS, che voglio continuare a lavorare quando si passa a un'altra schermata / attività. Perciò non posso annullare la registrazione il mio LocationListener nel onPause() della propria attività. Comunque ho ancora voglia di annullare la registrazione il mio ascoltatore GPS quando si passa a un'altra applicazione (in modo da risparmiare la batteria) e di riaccenderla quando si ritorna alla mia domanda, a prescindere dallo schermo / attività che l'utente è attualmente in.

Tutte le idee?

È stato utile?

Soluzione

  

C'è qualcosa di simile un'applicazione   globale onPause () e onResume ()?

No, mi spiace.

  

La mia attività principale in ascolto per il GPS   correzioni, che voglio continuare   di lavoro quando si passa ad un'altra   schermo / attività. Perciò non posso   annullare la registrazione il mio LocationListener nel   onPause propria attività (). Tuttavia ho ancora   desidera annullare la registrazione il mio ascoltatore GPS   quando si passa a un'altra applicazione   (In modo da risparmiare la batteria) e riaccenderlo   quando ritorno a mia domanda,   indipendentemente da quello schermo / attività   utente è attualmente in.

Ecco un possibile approccio:

Passo # 1: Spostare la logica LocationListener in un Service, che le attività si collegano a via della configurazione di legame locale o qualcosa del genere. Inoltre avere almeno una startService() chiamata di servizio, quindi un unbindService() non causerà la Service di andare via (supponendo che si sta utilizzando il modello di legame locale).

Passo # 2:. Hanno le attività chiamano in servizio durante onPause() e onResume()

Passo # 3: Avere il servizio mantenere un conteggio di riferimento delle attività in essere

.

Passo # 4: Quando il conteggio dei riferimenti raggiunge lo zero, avere il servizio in modo di ottenere svegliati tramite un timer e TimerTask. Inoltre, annullare tali TimerTask sospeso se il conteggio dei riferimenti viene incrementato.

Passo # 5:. Avere il TimerTask chiuso GPS se mai viene eseguito

La rete è che si avrà solo rilasciare GPS dopo tale dei tali quantità di inattività. Che l'inattività potrebbe essere per qualsiasi motivo.

Altri suggerimenti

È possibile creare una classe applicazione e, se le sue implementa Application.ActivityLifecycleCallbacks

public class AppController extends Application implements Application.ActivityLifecycleCallbacks
{

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        Toast.makeText(this, "----------onCreate()---------", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onActivityStarted(Activity activity) {
        Log.i("ApplicationName","----------onActivityStarted()---------");
    }

    @Override
    public void onActivityResumed(Activity activity) {
        Log.i("ApplicationName","----------onActivityResumed()---------");
    }

    @Override
    public void onActivityPaused(Activity activity) {
        Toast.makeText(this, "----------onActivityPaused()---------", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onActivityStopped(Activity activity) {
        Log.i("ApplicationName","----------onActivityStopped()---------");
    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
        Log.i("ApplicationName","----------onActivitySaveInstanceState()---------");
    }

    @Override
    public void onActivityDestroyed(Activity activity) {

    }
}

Quindi chiamare dalla vostra attività

@Override
protected void onPause() {
    AppController controller=(AppController)getApplicationContext();
    controller.onActivityPaused(Main3Activity.this);
    super.onPause();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top