扫码关注官方订阅号
在一个activity或者fragment中新建一个线程,activity销毁后,新建的线程也会销毁吗
业精于勤,荒于嬉;行成于思,毁于随。
不会。
进程销毁的时候,它才会销毁。所以这个问题就变成——进程何时销毁。
为了节省下次启动的时间,Android会尽可能的将进程驻留于内存中——按HOME键、返回键都不会销毁进程,只有在系统需要回收内存的时候才销毁进程。
用户的以下操作会造成进程被销毁:
将应用从“最近应用”列表移除
到“设置”里停止该应用
一个可行的方案是:
在线程的run方法里处理InterruptedException异常
run
InterruptedException
在Activity的onStop()函数里interrupt线程
onStop()
interrupt
代码如下:
public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private Thread thread; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.thread = new Thread() { @Override public void run() { while (true) { try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { // 跳出循环,线程会完成运行 break; } Log.d(TAG, "run: t " + System.currentTimeMillis()); } } }; this.thread.start(); } @Override protected void onStop() { super.onStop(); if (this.thread != null) { this.thread.interrupt(); } } }
在activity中开启的线程不会随着activity的销毁而销毁。
不会销毁,只有在线程里面的内容执行完成才可以。
activity被finish()掉后,只是销毁了主线程,子线程没有被销毁
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
不会。
线程何时销毁?
进程销毁的时候,它才会销毁。所以这个问题就变成——进程何时销毁。
进程何时销毁?
为了节省下次启动的时间,Android会尽可能的将进程驻留于内存中——按HOME键、返回键都不会销毁进程,只有在系统需要回收内存的时候才销毁进程。
用户的以下操作会造成进程被销毁:
将应用从“最近应用”列表移除
到“设置”里停止该应用
程序员如何让线程随Activity销毁
一个可行的方案是:
在线程的
run方法里处理InterruptedException异常在Activity的
onStop()函数里interrupt线程代码如下:
在activity中开启的线程不会随着activity的销毁而销毁。
不会销毁,只有在线程里面的内容执行完成才可以。
activity被finish()掉后,只是销毁了主线程,子线程没有被销毁