gpt4 book ai didi

java - Android - 可运行对象解析为 runOnUiThread() 参数

转载 作者:行者123 更新时间:2023-12-01 17:45:26 26 4
gpt4 key购买 nike

请完成这些步骤,

创建继承Runnable的Actor类

public abstract class Actor implements Runnable {


Actor(int queueSize){
}

@Override
public void run() {
onInit();
}
void onInit(){
// do stuff here
}}

然后我使用 Actor 创建 MyRunner 类

class MyRunner extends Actor{

MyRunner() {
super(10);
}}

然后在我的 Activity 中,我使用 runOnUiThread 如下

Actor runner = new MyRunner();
runOnUiThread(runner);

然后主线程卡住,整个屏幕变黑,应用程序被卡住。

我用了this thread实现我的代码

我错过了什么地方?

最佳答案

这是因为您正在使用 runOnUiThreadMainThread 上执行 runnable 您应该在后台运行您的 actor线程,让它完成工作并在需要使用 runOnUiThreadHandlerMainThreadHandler

时发布结果

例如:

public abstract class Actor implements Runnable {

Actor(int queueSize){
// empty block
}

@Override
public void run() {
onInit();
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// hello ui i'm done with my job!!
}
});
}
void onInit(){
// do stuff here
}
}

创建一个执行器

private static final int POOL_SIZE_DEFAULT = 4;
private static final int POOL_SIZE_MAX = 10;
private static final int TIME_OUT = 30;

private ThreadPoolExecutor = mThreadPoolExecutor = new ThreadPoolExecutor(POOL_SIZE_DEFAULT,
POOL_SIZE_MAX,
TIME_OUT,
TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(POOL_SIZE_DEFAULT));

执行你的actor:

mThreadPoolExecutor.execute(runner);

关于java - Android - 可运行对象解析为 runOnUiThread() 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55916359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com