我的应用程序中有一个后台线程。现在,当屏幕关闭时(说15秒后),线程正在运行,因此行为不如我所愿。因此,当屏幕关闭时,我必须以哪种方法在活动生命周期中停止线程。我知道如何停止线程,但不知道何时停止。提前致谢。
您是否希望它在应用程序在后台运行(如果用户在另一个应用程序中)?如果没有,请暂停。如果是这样,那么您需要一个BroadcastReceiver来捕获关闭的屏幕,并就此停止它。
IntentFilter screenStateFilter = new IntentFilter();
screenStateFilter.addAction(Intent.ACTION_SCREEN_ON);
screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(mScreenStateReceiver, screenStateFilter);
Java文件:
onReceive(Intent i) {
if( i.getAction().equals(Intent.ACTION_SCREEN_ON) ) {
// turn your thread start if you want or anything else
} else if( i.getAction().equals(Intent.ACTION_SCREEN_OFF) ) {
// turn your thread cancel here
}
}
并且以防万一,您不知道,警告-请勿使用thread.stop()来停止它。它可能导致崩溃,内存/资源泄漏和死锁。取而代之取消线程,并进行线程轮询以查看其是否已取消。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句