只是想验证Application.onCreate()
之前是否保证会调用BroadcastReceiver.onReceive()
?假设您正在等待 BOOT 广播或短信广播,您是否可以确定在Application.onCreate()
之前已经呼叫了BroadcastReceiver.onReceive()
一次?感谢
答案 0 :(得分:18)
文档告诉我们以下内容:
public void onCreate()
在应用程序启动时调用,在任何活动,服务之前, 或接收器对象(不包括内容提供商)已创建。
在这里找到: http://developer.android.com/reference/android/app/Application.html
答案 1 :(得分:5)
public void onReceive(Context context, Intent intent)
如果您注册静态接收器,则上下文是应用程序
否则,您可以使用
registerReceiver
答案 2 :(得分:-1)
旧问题,但是我可以提供更新的答案和实际测试结果。
最初我假设是这样,然后将应用程序设置为onCreate(),以首先保存应用程序上下文,就像这样:
@Override
public void onCreate()
{
myapp.app_context = this;
super.onCreate();
现在我声明了一个接收器,
<receiver android:name=".myreceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
并在收到时:
@Override
public void onReceive(Context context, Intent intent)
{
ctx = myapp.app_context;
得到一个显示ctx(myapp.app_context)的堆栈跟踪为NULL!在Android 6 Galaxy J7设备上为1,在Android 9 Xperia XZ1设备上为1。