2013-03-25 14 views
8

Jestem nowy w Androidzie, nie jestem zbyt świadomy usług.i mam klasę aktywności z interfejsem użytkownika, chcę, aby ta klasa aktywności działała w tle, kiedy kliknę przycisk Wstecz. Jak zrobić moją aktywność działa w tle jak usługi, plz mi pomóc ..Wykonywanie działań w tle

+1

wprowadzenia usługi w metodzie OnPause(), zatrzymać go w onResume(). Jeśli chcesz zmienić działanie w usługę, powinieneś korzystać z usługi. –

+0

Następnie należy napisać usługę? –

+0

@RaghavSood możesz wyjaśnić, jak sprawić, aby moja działalność stała się usługą –

Odpowiedz

3

Jeśli chcesz po prostu swoją aktywność działa w tył Spróbuj użyć

Movetasktoback(true); 
+1

ok. to działało dla mnie .. –

+2

@ user2208695 czy możesz powiedzieć, gdzie to napisać –

0

Należy przeczytać podręcznik programisty na wątków: http://developer.android.com/guide/components/processes-and-threads.html

konkretnie funkcji doInBackground() przykład ze strony:

public void onClick(View v) { 
    new DownloadImageTask().execute("http://example.com/image.png"); 
} 

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    /** The system calls this to perform work in a worker thread and 
     * delivers it the parameters given to AsyncTask.execute() */ 
    protected Bitmap doInBackground(String... urls) { 
    return loadImageFromNetwork(urls[0]); 
} 

    /** The system calls this to perform work in the UI thread and delivers 
     * the result from doInBackground() */ 
    protected void onPostExecute(Bitmap result) { 
     mImageView.setImageBitmap(result); 
    } 
} 
+0

Nie chcę, aby to był wątek .. chcę tylko uruchomić to w backgroung jak usługa ... moja działalność składa się z menedżera telefonii, odbiornika transmisji itp., Więc nie ma potrzeby, aby przejść do wątku –

+0

@Jesbin MJ Sprawdź edytuj – RyPope

4

Nie można naprawdę uruchomić Activity w tle! Gdy działanie nie jest na pierwszym planie, dostaje się do onStop, a następnie system może go zakończyć, aby zwolnić zasoby, metodą onDestroy! zobacz Activity Lifecycle

W celu uruchomienia na tle trzeba stworzyć Service lub IntentService

Kasa android javadoc o usługach here i here lub IntentService

i tutaj jest osobą trzecią Android Service Tutorial

Edytuj: może być również potrzebna komunikacja między usługą a działaniem, aby można było przez to przejść: Example: Communication between Activity and Service using Messaging

+0

przeszedłem przez to, ale nie dostałem tego. jak powiązać moją klasę aktywności z klasą usług –

+0

zobacz także ostatnią edycję ... – madlymad

0

Wygląda na to, że chcesz uruchomić działanie w tle po zamknięciu. Aktywności nie można jednak uruchamiać, chyba że jest na pierwszym planie.

Aby osiągnąć to, czego chcesz, w trybie onPause(), powinieneś uruchomić usługę, aby kontynuować pracę. Funkcja onPause() zostanie wywołana po kliknięciu przycisku Wstecz. W opcji onPause, po prostu zapisz bieżący stan i prześlij zlecenie do usługi. Usługa będzie działać w tle, gdy twoja aktywność nie jest na pierwszym planie.

Po powrocie do aktywności później, zrób coś w onResume(), aby ponownie przenieść pracę usługi do swojej aktywności.