Java 从主线程发布的主线程上的开始线程?
通常我从工作线程启动Java 从主线程发布的主线程上的开始线程?,java,android,multithreading,Java,Android,Multithreading,通常我从工作线程启动Runnable,但也可能从主线程调用它。您认为它有任何负面影响吗?您不是在启动线程,而是在主循环器上附加一个处理程序,并向其发送一个运行命令。它将具有与从另一个线程调用它时完全相同的效果。您不是启动线程,而是将处理程序附加到主循环器并向其发送运行命令。它将具有与从另一个线程调用它时完全相同的效果。处理程序在需要向另一个线程发送消息时使用。 如果在主线程中创建处理程序,则可以将消息从后台线程发送到主线程。 最好使新的内部静态类扩展Hadnler,将WeakReference变
Runnable
,但也可能从主线程调用它。您认为它有任何负面影响吗?您不是在启动线程,而是在主循环器上附加一个处理程序,并向其发送一个运行命令。它将具有与从另一个线程调用它时完全相同的效果。您不是启动线程,而是将处理程序附加到主循环器并向其发送运行命令。它将具有与从另一个线程调用它时完全相同的效果。处理程序在需要向另一个线程发送消息时使用。
如果在主线程中创建处理程序,则可以将消息从后台线程发送到主线程。
最好使新的内部静态类扩展Hadnler,将WeakReference变量声明为Activity。处理程序在需要向另一个线程发送消息时使用。 如果在主线程中创建处理程序,则可以将消息从后台线程发送到主线程。 更好地使新的内部静态类扩展Hadnler,将WeakReference变量声明为Activity
“MainActivity.context”有什么问题?我总是怀疑为什么在调用不同的方法时上下文总是需要。在iOS中不存在类似的动物。所以我只使用anywhere上下文需要“MainActivity.context”
。MainActivity.context引用什么?您的应用程序或MainActivity?context=getApplicationContext()代码>这很好,那么为什么不使用“YourApplication.getContext()”?如果出于某种原因,代码结果是这样的“context=this”,可能会发生内存泄漏。“MainActivity.context”有什么问题?
?我总是怀疑为什么在调用不同的方法时上下文总是需要。在iOS中不存在类似的动物。所以我只使用anywhere上下文需要“MainActivity.context”
。MainActivity.context引用什么?您的应用程序或MainActivity?context=getApplicationContext()代码>这很好,那么为什么不使用“YourApplication.getContext()”?如果出于某种原因,代码结果是这样的“context=this”,那么可能会发生内存泄漏。在执行正常的“方法调用”时,是否会有类似这样的“延迟”发布Runnable
@János是的,这些可运行程序被添加到一个队列中,该队列是在它之前必须做的任何事情之后执行的。当执行一个正常的“方法调用”时,任何“延迟”发布Runnable
像这样从主到主进行比较@是的,这些可运行程序被添加到一个队列中,该队列在之前必须执行的任何操作之后执行
Handler mainHandler = new Handler(MainActivity.context.getMainLooper());
mainHandler.post(new Runnable() {
@Override
public void run() {
// .. some code
}
});