gpt4 book ai didi

android - 在 Looper.loop() 之后不执行 onPostExecute()

转载 作者:行者123 更新时间:2023-11-29 19:15:57 27 4
gpt4 key购买 nike

doInBackground() 工作正常.. Looper.loop() 之后的代码将无法工作。记录 Looper.Loop() 后不打印且不执行 onPostExceute()。我需要等到方法 1、2、3 执行。如果不使用 Looper.prepare(),方法 1 将发生异常。

@Override
protected Void doInBackground(Void... params) {
try {

if (Looper.myLooper() == null)
Looper.prepare();
method1();
method2();
method3();
Looper.loop();

Log.d(TAG,"after loop()");
} else {
method4(); //inside asyn task
}

Log.d(TAG,"doInBackground end");

}catch (Exception e) {
Log.d(TAG,"doInBackground exception "+e);
}


return null;
}

@Override
protected void onPostExecute(Void result) {
try {


Log.d(TAG, "onPostExecute");



//............

}catch (Exception e){
Log.d(TAG,"onPostExecute end");
}
}


@Override
protected void onPreExecute() {
//.....
}

最佳答案

Looper.loop 使线程循环永远等待消息队列中的传入事件并运行关联的可运行对象。它不应该在 AsyncTask 上调用,它会导致整个 AsyncTask 线程无限循环,使所有 future 的 AsyncTask 死锁。它应该只在线程上调用,并且只有在您了解如何使用它的情况下才能调用。

关于android - 在 Looper.loop() 之后不执行 onPostExecute(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43503786/

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