在 Android 中,线程的销毁通常有两种方法:
1. 调用 Thread 的 interrupt() 方法中断线程:可以在外部调用线程的 interrupt() 方法来中断线程的执行。在线程的执行过程中,可以使用 Thread.currentThread().isInterrupted() 方法来检查线程是否被中断,然后在合适的时候退出线程的执行。
示例代码如下:
```java
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// 线程逻辑
}
}
});
// 在合适的时机调用线程的 interrupt() 方法来中断线程
thread.interrupt();
```
2. 在线程的执行逻辑中使用一个标志位来控制线程的执行:可以在线程的执行逻辑中使用一个标志位来控制线程的执行,当标志位为 false 时,退出线程的执行。
示例代码如下:
```java
private boolean isRunning = true;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while (isRunning) {
// 线程逻辑
}
}
});
// 在合适的时机将标志位设为 false,退出线程的执行
isRunning = false;
```
需要注意的是,以上的方法只是退出线程的执行,线程对象本身并没有销毁。如果需要销毁线程对象,可以通过让线程对象为空来释放线程对象的引用。
```java
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// 线程逻辑
}
});
// 使线程对象为空,释放线程对象的引用
thread = null;
```
另外,如果线程是在 Activity 或 Fragment 中创建的,还可以在销毁 Activity 或 Fragment 的回调方法中,通过调用线程的 interrupt() 方法或设置标志位来销毁线程。
```java
@Override
protected void onDestroy() {
super.onDestroy();
// 在 Activity 销毁时中断线程的执行
if (thread != null) {
thread.interrupt();
}
}
```