Android fragment结束正在执行的线程
时间: 2023-08-18 15:12:21 浏览: 70
在Android Fragment中,可以在Fragment的生命周期方法中执行线程操作,如onCreateView()、onResume()等。当Fragment被销毁时,线程也应该被终止,以避免造成不必要的资源浪费和内存泄漏。
可以通过以下方法来结束正在执行的线程:
1. 使用标志位结束线程
在线程中设置一个标志位,当Fragment被销毁时,将标志位设为true,线程会退出循环并结束。示例代码如下:
```
private boolean isRunning = true;
private void startThread() {
new Thread(new Runnable() {
@Override
public void run() {
while (isRunning) {
// do something
}
}
}).start();
}
@Override
public void onDestroyView() {
super.onDestroyView();
isRunning = false;
}
```
2. 使用Handler结束线程
使用Handler来发送消息,当Fragment被销毁时,通过removeCallbacksAndMessages()方法清除消息队列中的所有消息,从而结束线程。示例代码如下:
```
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// do something
mHandler.sendEmptyMessageDelayed(0, 1000);
}
};
@Override
public void onResume() {
super.onResume();
mHandler.sendEmptyMessage(0);
}
@Override
public void onPause() {
super.onPause();
mHandler.removeCallbacksAndMessages(null);
}
```
以上两种方法都可以有效地结束正在执行的线程,具体使用哪种方法取决于具体的业务需求。