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