希望不是一个骗局,我尽可能地挖出来并且什么也没得到。当我输入标题时SO中的所有建议都有少于0的upvotes,所以希望我没有遵循相同的路径。基本上,我的问题是如果我在主线程上执行此操作会发生什么:
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
startActivity(i);
}
});
}
}).start();
假设i
是intent
,我没有其他任何事情,等等。显然这是一个非常微不足道的案例。但我想知道我是否需要对工作线程做什么?如果我这样做,我会导致内存泄漏或其他问题吗?我是否需要调用工作线程上的某些内容告诉它我不再需要它?它会不会理解它不再需要它?我只是完全误解了什么?谢谢!
答案 0 :(得分:1)
嗯,我不确定这是否会起作用。但如果你这样做,可能会导致内存泄漏。
您可以通过asynctask https://github.com/greenrobot/EventBus发布活动创建活动 ,并在您的活动/片段中订阅该事件。您可以为多个活动创建基类并在其中进行订阅。所以你会在任何地方举办活动。
答案 1 :(得分:0)
完成执行后,Java Thread将变为Dead。在线程完成它的任务之前你会有一个短暂的内存泄漏(因为线程绑定到当前活动,并且在你完成你的东西之前不会销毁该活动)。
无论如何,如果你想在一些后台任务后更新ui,我会建议你使用AsynkTask。
如果您更高级,最好的解决方案是使用RxJava或实时数据。在android中我们不经常使用Thread,因为我们有其他的包装器可以简化线程之间的通信