我想知道如果我要离开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();
}
}
答案 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