【问题标题】:How to wait for the service to load before starting the activity如何在启动活动之前等待服务加载
【发布时间】:2018-03-26 04:00:00
【问题描述】:

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

我计划的MainActivity的大纲是

onCreate - 启动服务

onResume - 显示初始屏幕,直到 Service 中的特定布尔值变为 true,然后切换到另一个片段

【问题讨论】:

  • 在库加载完成时广播一个动作。并在 Activity 中接收它。还要维护Service 中的状态,以便下次打开Activity 时,它可以访问当前状态。

标签: java android concurrency synchronization


【解决方案1】:

您可以使用从 Service 到 MainActivity 的广播接收器来触发 MainActivity 中的方法...而不是不断检查服务中的静态布尔值。

但是您要非常确定地处理由于任何原因而永远不会加载的情况,否则用户将永远盯着启动屏幕。

【讨论】:

【解决方案2】:

简单的解决方案是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);

现在从您想要更新activityservice class 调用此方法

sendBroadcast(new Intent().setAction("bcNewMessage"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多