为了账号安全,请及时绑定邮箱和手机立即绑定

在一个activity或者fragment中新建一个线程,activity销毁后

在一个activity或者fragment中新建一个线程,activity销毁后

慕沐林林 2019-03-21 18:19:26
在一个activity或者fragment中新建一个线程,activity销毁后,新建的线程也会销毁吗
查看完整描述

4 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

不会


线程何时销毁?

进程销毁的时候,它才会销毁。所以这个问题就变成——进程何时销毁。

进程何时销毁?

为了节省下次启动的时间,Android会尽可能的将进程驻留于内存中——按HOME键、返回键都不会销毁进程,只有在系统需要回收内存的时候才销毁进程。

用户的以下操作会造成进程被销毁:

  • 将应用从“最近应用”列表移除

  • 到“设置”里停止该应用

程序员如何让线程随Activity销毁

一个可行的方案是:

  • 在线程的run方法里处理InterruptedException异常

  • 在Activity的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();

        }

    }


}


查看完整回答
反对 回复 2019-04-22
?
慕村9548890

TA贡献1884条经验 获得超4个赞

在activity中开启的线程不会随着activity的销毁而销毁。


查看完整回答
反对 回复 2019-04-22
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

不会销毁,只有在线程里面的内容执行完成才可以。


查看完整回答
反对 回复 2019-04-22
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

activity被finish()掉后,只是销毁了主线程,子线程没有被销毁


查看完整回答
反对 回复 2019-04-22
  • 4 回答
  • 0 关注
  • 963 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号