Java 从Runnable()启动活动

Java 从Runnable()启动活动,java,android,Java,Android,希望不是被愚弄,我尽可能地四处挖掘,什么也没想到。因此,当我键入标题时,所有的建议都只有不到0票,所以希望我没有遵循相同的路径。本质上,我的问题是,如果我在我的主线上这样做,将会发生什么: new Thread(new Runnable() { @Override public void run() { runOnUiThread(new Runnable() { @O

希望不是被愚弄,我尽可能地四处挖掘,什么也没想到。因此,当我键入标题时,所有的建议都只有不到0票,所以希望我没有遵循相同的路径。本质上,我的问题是,如果我在我的主线上这样做,将会发生什么:

new Thread(new Runnable() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            startActivity(i);
                        }
                    });
            }
        }).start();

假设
i
是一个
意图
,我没有把其他事情搞砸,等等。显然,这是一个非常小的例子。但是我想知道我是否需要对工作线程做些什么?如果我这样做,是否会导致内存泄漏或其他问题?我是否需要调用工作线程上的某个对象来告诉它我不再需要它?它会自己理解不再需要它吗?我是不是完全误解了什么?谢谢

嗯,我不确定这是否有效。但是,如果您这样做,可能会导致内存泄漏

您可以通过asynctask创建发布事件的活动
,并在活动/片段中订阅该事件。您可以为多个活动创建基类并在其中订阅。因此,您可以在任何地方获得事件。

java线程在完成执行后将死亡。在线程完成其任务之前,您将有一个短暂的内存泄漏(因为线程绑定到当前活动,并且该活动在您完成任务之前不会被销毁)

无论如何,我建议你使用AsynkTask,如果你想在一些后台任务之后更新ui


如果您更高级,最好的解决方案是使用RxJava或实时数据。在安卓系统中,我们不经常使用线程,因为我们有其他包装器,可以简化线程之间的通信

如果不让我知道,也许这个答案可以回答您的问题,我会在有时间的时候试一试。不是真的……我知道怎么做,只是没有暗示。Runnable是否会立即调用
runOnUiThread()
,仅用于演示目的?是的……实际上,Runnable还可以做很多其他事情,但根据已经完成的工作,我想根据已经完成的工作的结果开始一项新的活动。