gpt4 book ai didi

java - Android - 在启动服务之前等待线程执行

转载 作者:行者123 更新时间:2023-11-29 05:10:00 25 4
gpt4 key购买 nike

在我的应用程序中,我使用了一项服务,该服务使用从服务器加载的字典。在调用服务之前,我在一个单独的线程中加载字典。我想知道如何仅在字典完全加载后才启动服务,因为当我尝试访问服务内的字典时,它返回 null。

MainActivity.java

onCreate(){
...
doFunction();
Intent intent = new Intent(this, ServiceA.class);
startService(intent);
}

private void doFunction(){
ClassThread().getInstance().process();
}

类线程.java

public class ClassThread{
....
public void process(){
final Handler handler = new Handler(new Handler.Callback(){
@Override
public boolean handleMessage (Message msg){
if(msg.arg1 == 1){
loadDictionary();
}
return false;
}
});

final Message message = new Message();

new Thread(){
public void run(){
message.arg1 = 1;
handler.sendMessage(message);
}
}.start();

最佳答案

我可以建议另一种方法:为什么不使用 AsyncTask 而不是 Thread ?在doInBackground()中加载字典数据,在onPostExecute()中调用startService()。不需要困惑的线程同步。

AsyncTask 抽象被设计为与 Android 的单 UI 线程策略结合使用,以避免这些尴尬的同步问题。

关于java - Android - 在启动服务之前等待线程执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28939793/

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