I want to stop a Thread when the User leaves the Activity. It sounds so simple but no function, which i tried, works.
I start the Activity with the Code
lovi = new Intent(getApplicationContext(), listoverview.class);
lovi.putExtra("reloadAll", true);
startActivity(lovi);
In the onCreate of the listoverview i start the Thread with the Code
rlMF.start();
And rlMF looks like this:
public Thread rlMF = new Thread(new Runnable() {
public void run() {
reloadMissingFiles();
}
});
I tried in the onPause to use rlMF.stop(), .interrupt(), .suspend. Nothing stops it.
Instead of
Thread
try and use anAsyncTask
, this way you can call thecancel(boolean mayInterruptIfRunning)
method of theAsyncTask
. You should also keep in mind to catch theInteruptedException
that may be thrown if you usecancel(true)
.Here's a usefull tutorial about
Threads
,Handlers
andAsyncTask
that may help you.You have to add some flag to to stop it. Stopping thread by other means might have dire consequences, like resource leaks.
For example:
When creating runnable:
In onPause():
Using the Android Handler
In the onPause: