只是想验证Application.onCreate()保证在之前被调用BroadcastReceiver.onReceive()?假设您正在等待BOOT广播或短信广播,您能否确定Application.onCreate()在您到达之前已经呼叫过一次BroadcastReceiver.onReceive()?谢谢
小智 19
文档告诉我们以下内容:
public void onCreate()
在应用程序启动时调用,在创建任何活动,服务或接收方对象(不包括内容提供程序)之前调用.
在此处找到:http: //developer.android.com/reference/android/app/Application.html
public void onReceive(Context context, Intent intent)
如果您注册一个静态的接收器,上下文是应用程序,否则就是你所说的情况下registerReceiver用
老问题,但是我可以提供更新的答案和实际测试结果。
最初我是这么认为的,并将我的应用程序设置为 onCreate() 首先保存应用程序上下文,如下所示:
@Override
public void onCreate()
{
myapp.app_context = this;
super.onCreate();
Run Code Online (Sandbox Code Playgroud)
现在我得到了一个这样声明的接收器:
<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>
Run Code Online (Sandbox Code Playgroud)
并在接收时:
@Override
public void onReceive(Context context, Intent intent)
{
ctx = myapp.app_context;
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪显示 ctx (myapp.app_context) 为 NULL!在 Android 6 Galaxy J7 设备上获得 1 个,在 Android 9 Xperia XZ1 上获得 1 个。
| 归档时间: |
|
| 查看次数: |
2066 次 |
| 最近记录: |