Thread将在之前的Activity中生存多长时间

时间:2013-04-30 19:38:58

标签: android

我想知道如果我要离开Activity,我是否可以依赖在单独的非UI线程中执行的任务。查看下面的示例,即使我在另一个Runnable,我也可以看到单独的Thread中的Activity正在执行。但什么时候会被杀?

public class MyActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        runTask();
        startActivity(new Intent(this, SecondActivity.class));
    }

    private void runTask() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    Log.i("Dev", "here I am");
                    SystemClock.sleep(1000);
                }
            }
        }).start();
    }
}

2 个答案:

答案 0 :(得分:0)

java.lang.Thread与Android UI组件生命周期无关,因此就像在普通JVM中一样,它将继续运行,直到其run()方法返回... 除非 Android会在此之前终止您的整个应用程序进程,如果您的应用程序在后台并且另一个应用程序需要RAM,它可以执行此操作。

顺便说一下,因为线程没有绑定到UI组件生命周期,所以不能简单地从该线程调用另一个UI组件。如果您想要回到用户界面,则必须发布到Handler或发布广播或其他内容,但您可能已经知道。

最后,在您的示例代码中,Thread实例(通过匿名Runnable)将使封闭的Activity类不被垃圾收集,因此您可能需要重新考虑该构造。 / p>

如果您想进行与任何单Activity无关的后台工作,通常最好将其建模为IntentService

答案 1 :(得分:-1)

你可以调用Interrupt()来发布你线程的中断请求。

http://developer.android.com/reference/java/lang/Thread.html