【问题标题】:Starting activity immediatly at boot using direct boot mode使用直接启动模式在启动时立即启动活动
【发布时间】:2019-08-08 02:23:30
【问题描述】:

使用 boot_completed 在启动时启动 Activity 时,该 Activity 可能需要一些时间才能在启动时启动。是否可以使用直接启动模式在启动时立即启动活动?

【问题讨论】:

  • BOOT_COMPLETED 接收者注册并调用 onReceive() 方法时,活动将被启动
  • 是的,我知道。但是在使用 boot_completed 注册接收器时,设备启动和活动启动之间总是存在延迟
  • 当然,您的应用接收广播需要时间,系统将其进程/应用优先于您的应用。您可以通过捕获未启用过滤器的日志自行检查。
  • 所以我不能直接启动模式吗?

标签: android android-activity boot


【解决方案1】:

android:priority

它控制执行广播接收器以接收广播消息的顺序。具有较高优先级值的那些在具有较低值的那些之前被调用。 (该顺序仅适用于同步消息;对于异步消息将被忽略。)

根据文档默认值为0

<receiver android:name=".BootCompleteReceiver">
        <intent-filter android:priority="999">
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
</receiver>

编辑:创建无障碍服务。确保您的应用已在辅助功能设置中启用并且您的服务正在运行,您的服务将在启动时自动启动。在您的辅助功能服务中通过此方法启动您的服务或活动

 @Override
public void onServiceConnected() {
}

我刚试过,看起来很有希望!比 BOOT_COMPLETED 接收器快很多。让我知道它是否有效!

注意:不过,Google 可能不会批准您的应用。

见:https://developer.android.com/guide/topics/ui/accessibility

虽然在您的应用中添加无障碍功能是有益的,但您应该仅将它们用于帮助残障用户与您的应用互动。

【讨论】:

  • 即使有优先级,我仍然会在启动和接收者收到消息之间产生延迟
猜你喜欢
  • 1970-01-01
  • 2013-07-10
  • 2014-04-18
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
相关资源
最近更新 更多