Cum să oprești complet serviciul la sol?

Salut prieteni am o problemă de rezolvat ... Vreau să distrug serviciul complet, odată ce apel laDestroy() metoda de la activitate. Dar problema mea este că eu sunt în imposibilitatea de a distruge complet .. în fundal său păstrează pe care rulează, eu sunt partajarea codului eșantion ceea ce am încercat ..

    //Activity Class
    public class ServiceToAct extends Activity {
    private static final String TAG = "BroadcastEvent";
    private Intent intent;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        intent = new Intent(this, BroadcastService.class);
        startService(intent);
        registerReceiver(broadcastReceiver, new       IntentFilter(myService.BROADCAST_ACTION));
    }

    /*@Override
    protected void onResume() {
        super.onResume();

    }*/

    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(broadcastReceiver);

    }

    @Override
    protected void onDestroy() {

        stopService(intent);

        Toast.makeText(this, "Destroy Completely", Toast.LENGTH_LONG).show();
    }

    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

        }
    };
}

// service class
public class myService extends Service {

    private static final String TAG = "BroadcastEvent";
    public static final String BROADCAST_ACTION = "com.service.activity.myService";
    private final Handler handler = new Handler();
    Intent intent;


    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Toast.makeText(this, "created", Toast.LENGTH_LONG).show();
        intent = new Intent(BROADCAST_ACTION);
    } 

    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        Toast.makeText(this, "start", Toast.LENGTH_LONG).show();
        handler.removeCallbacks(sendToUI);
        handler.postDelayed(sendToUI, 1000); 
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        stopSelf();
        //stopService(intent);
        Toast.makeText(this, "Destroy", Toast.LENGTH_LONG).show();
    }

    private Runnable sendToUI = new Runnable() {

        @Override
        public void run() {
            myData();
            handler.postDelayed(this, 10000); 
        }
    };

    private void myData() {

        Log.d(TAG, "keep on entering");
        Toast.makeText(this, "Keep on despling in UI", Toast.LENGTH_LONG).show();

        sendBroadcast(intent);
    }
}

Aici, de fapt, vreau să actualizez UI-ul meu de la serviciul meu, totul merge, dar dacă distrug serviciul, păstrează-l pe metoda myData() și primesc mesajul Toast msg dacă închid și aplicația. Problema mea este că nu vreau ca toast msg să se termine serviciul Am folosit metoda stopService (intent), care distruge serviciul, dar metoda de fundal myData() continua sa sune

1
Dacă doriți Service care are ciclul său de viață legat de activitatea dvs., trebuie să luați în considerare apelul bindService pentru ao porni - nu startService . În acest fel, Service va termina când ultima Activity a sunat unbindService .
adăugat autor Jens, sursa

3 răspunsuri

pentru serviciul de oprire complet utilizați acest ..

myActivity.java

@Override
    public void onDestroy() {
      stopService(intent); 
        super.onDestroy();
        Toast.makeText(this, "Destroy", Toast.LENGTH_LONG).show();
    }

service.java

@Override
    public void onDestroy()
    {

        stopSelf();
        super.onDestroy();
    }
0
adăugat
unde ați scris acel cod înseamnă în ce clasă?
adăugat autor Niranj Patel, sursa
.... Am verificat, dar am nevoie de proiect întreg pentru test aici, astfel plz face un lucru folosiți TimerTask în loc de manipulant
adăugat autor Niranj Patel, sursa
lipiți ambele clase pe care le voi verifica
adăugat autor Niranj Patel, sursa
Nu sunt sigur, dar încercați acest handler.removeCallbacks (sendToUI);
adăugat autor Niranj Patel, sursa
poate fi "RunTable sendToUI" nu se oprește, așa că încercați să o opriți și să verificați
adăugat autor Niranj Patel, sursa
încercați să începeți serviciul de la metoda onCreate în loc de onResume și verificați
adăugat autor Niranj Patel, sursa
trebuie să scrieți în metoda OnDestroy activitățile pe care le veți începe de la serviciu
adăugat autor Niranj Patel, sursa
stopSelf() nu funcționează, de asemenea
adăugat autor KKC, sursa
încep serviciul de la metoda onCreate, dar totuși aceeași problemă
adăugat autor KKC, sursa
ya ya am scris peDestroy în clasa de activitate, u r corect. Dar tot lucrul acum lucrat am încercat ur de mai sus de cod, de asemenea ... Totuși, eu sunt obtinerea Toast msg din myData() (a se vedea codul meu de mai sus)
adăugat autor KKC, sursa
ya exact, mee prea gândindu-se la fel, orice idee plz cum să oprească.
adăugat autor KKC, sursa
Mulțumesc u capDroid 4 ur ajutor, pe care am încercat deja, a se vedea codul meu, dar nu de lucru, în orice alt mod.
adăugat autor KKC, sursa
Am redactat ambele verificări de clasă o dată ... și să-mi spuneți ce problemă
adăugat autor KKC, sursa
ya că am folosit deja .... dar nu oprirea serviciului, mențineți-l pe rulează în fundal
adăugat autor KKC, sursa

utilizați metoda stopService() după actualizarea interfeței utile

sau

În loc să utilizați startService, folosiți bindService în activitate. Când activitatea distruge, serviciul distruge și el

0
adăugat
În loc să utilizați startService, folosiți bindService în activitate. Când activitatea distruge, serviciul distruge și el
adăugat autor Raghu Nagaraju, sursa

Mai bine nu trebuie să apelați pe Xxx() în mod corect. Utilizați stopService (intenția i) în activitatea dvs. și stopSelf() în serviciul dvs. pentru a opri în schimb.

0
adăugat
te-am folosit stopService (intenție) în Activitate și stopSelf() în serviciu, dar acum lucrează
adăugat autor KKC, sursa
Android dezvoltatori, România — Moldova
Android dezvoltatori, România — Moldova
27 participanți

Parteneri: ciupacabra.com, @php_ro, @js_ro, @node_ro iOS: @ro_ios Reguli: https://github.com/js-ro/it-telegram/blob/master/RULES.md