如何在启动活动之前等待服务加载

时间:2018-03-26 04:00:01

标签: java android concurrency synchronization

Service类将加载一个库,库需要大约4-5秒才能准备就绪。使MainActivity继续检查Service类中静态布尔值的状态并在它准备就绪时执行某些操作的最佳方法是什么?我环顾四周,知道使用忙等待循环是不好的。

我计划的MainActivity的大纲是

onCreate - 启动服务

onResume - 显示启动画面,直到Service中的特定布尔值变为true然后切换到另一个片段

2 个答案:

答案 0 :(得分:3)

您可以使用从服务到MainActivity的广播接收器来触发MainActivity中的方法...而不是经常检查服务中的静态bool。

但是你想要非常肯定地处理因任何原因从未加载的情况,否则用户将永远盯着闪屏。

答案 1 :(得分:1)

简单的解决方案是Broadcast Reciever试试这个

BroadcastReceiver broadCastNewMessage = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // do your stuff here

        }
    };

现在onCreate()注册了这个

registerReceiver(this.broadCastNewMessage, new IntentFilter("bcNewMessage"));

并在onDestroy()

unregisterReceiver(broadCastNewMessage);

现在从您想要更新service class

activity调用此方法
sendBroadcast(new Intent().setAction("bcNewMessage"));