花了很多时间接收启动完成广播

时间:2015-12-12 10:46:52

标签: android broadcastreceiver bootcompleted

我有一个必须在Android系统启动时运行的应用程序,我使用通常的方式注册广播并接收它:

manifest.xml

中的

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.automation.isolace"
    android:versionCode="8"
    android:versionName="1.3"
    android:installLocation="internalOnly" >

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

   <application
   .
   .
   .
      <receiver
        android:name="com.automation.standards.BootCompletedReceiver"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
        <intent-filter android:priority="999">
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.QUICKBOOT_POWERON" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
      </receiver>
        .
        .
        .
    </application>
</manifest>

BroadcastReceiver班:

public class BootCompletedReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("MConn", "BOOT_COMPLETED received");
    }
}

然后,当设备启动时,应用程序应立即接收boot_completed广播,但结果会因不同设备而异,在某些设备上,应用会立即收到它,而在其他设备中,它会在一段时间后收到它,这可能是一两秒,在某些设备上它可以达到大约10秒,这里的问题是应用程序必须在主屏幕UI出现之前运行,因此它必须立即接收广播。

正如清单中的代码所示,我试图给广播带来最高优先级,但问题仍然存在。

那么,有什么可能实现这一点,是否有办法解决这个问题?是否有办法以解决方法克服这种情况(例如阻止设备暂时显示屏幕或阻止系​​统启动其主页活动布局)?

0 个答案:

没有答案