Java 何时是终止线程的最佳时间,如何终止?

Java 何时是终止线程的最佳时间,如何终止?,java,android,runnable,android-thread,Java,Android,Runnable,Android Thread,我有一个活动,它有一个扩展了SurfaceView的类,并实现了Runnable以不断地在画布对象上绘制。我意识到,当我想切换活动并终止当前活动时,即使调用finish,线程本身也不会被破坏。因此,我想知道在onDestroy方法中销毁该线程的最佳时间是什么时候?更重要的是,如何破坏该线程?谢谢。不,因为活动结束时并不总是调用onDestroy。最好的办法是在顶部杀死线程,在onStart中总是启动它 这样,当您的活动处于后台时,线程将永远不会运行,并且在关闭时将被终止 终止线程取决于您使用的线

我有一个活动,它有一个扩展了SurfaceView的类,并实现了Runnable以不断地在画布对象上绘制。我意识到,当我想切换活动并终止当前活动时,即使调用finish,线程本身也不会被破坏。因此,我想知道在onDestroy方法中销毁该线程的最佳时间是什么时候?更重要的是,如何破坏该线程?谢谢。

不,因为活动结束时并不总是调用onDestroy。最好的办法是在顶部杀死线程,在onStart中总是启动它

这样,当您的活动处于后台时,线程将永远不会运行,并且在关闭时将被终止

终止线程取决于您使用的线程类型。常规线程可以用

yourThread.interrupt()
然后在你的线程中,你会做如下的事情

while(!Thread.currentThread().isInterrupted()) {
         // ...
    }

Re,…实现Runnable以在画布对象上不断绘制。。。我不太了解Android,但在大多数GUI框架中,设置显示动画的最好、最通用的方法是设置一个定期计时器任务,以定期更新显示。@jameslarge谢谢您的评论,在Android中,为二维动画设置一个单独的线程是标准的,该线程不断地在画布对象上绘制