我有一个必须在 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 出现之前运行,因此它必须立即接收广播。
正如清单中的代码所示,我试图为广播提供最高优先级,但问题仍然存在。
那么,有哪些可能性可以实现这一点,有没有办法解决这个问题?有没有办法以变通的方式克服这个问题(比如阻止设备显示屏幕一段时间或阻止系统启动其家庭活动布局)?