Я могу предложить более простой и безопасный подход к этому
Используйте общее значение в вашем приложении;
SharedPreferences или внутри контекста приложения
Key = IsStopDownload
Значение = Истина / Ложь
Part.1)
в контексте приложения (MyApplication)
private boolean isAppActive = false;
public void setAppState(Context context, boolean state) {
isAppActive = state;
// note: you can also store this in SharedPreferences
}
public boolean getAppState(Context context) {
return isAppActive;
// note: you can also load this from SharedPreferences
}
part.2)
Активность onResume и onPause являются гарантированными местами для определения состояния вашей активности.
onResume -> активность активна
onPause -> активность не активна
Part.3)
пусть ваш поток проверит состояние активности, и если он не активен, он может остановиться сам, что безопаснее, чем внешнее прерывание. потоки могут вести себя странно, когда прерываются извне, безопаснее разрывать цикл изнутри.
, например
((MyApplication)context.getApplicationContext()).getAppState(context);
если это ложно, поток останавливается
надеюсь, это поможет ...
---
Социальное кодирование @ AspiroTV