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

Android - Wait for a thread to execute before starting a service

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

MainActivity.java

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

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

ClassThread.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(); 

您可以使用 Android 的 AsynchTask!

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

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