当我在Android 8.1.0上测试我的应用时,我发现了系统行为:
1.打开我的应用程序。按照此路径打开public function boot()
{
Validator::extend(
'older_than',
function ($attribute, $value, $parameters, $validator) {
$minAge = (!empty($parameters))
? (int) $parameters[0]
: 18;
return (new DateTime)->diff(new DateTime($value))->y >= $minAge;
}
);
Validator::replacer(
'older_than',
function ($message, $attribute, $rule, $parameters) {
return "The age must be at least {$parameters[0]}";
}
);
}
:Activity B
- > LauncherActivity
- > Activity A
。
2.按主页按钮,然后转到应用程序的权限页面
3.撤销许可。
4.通过任务列表返回应用程序,应用程序崩溃。
实际上,在第3步中,只要用户撤消权限,Android系统就会立即终止应用进程。因此,当用户重新打开应用程序时,系统将启动堆栈中的顶级活动。在这种情况下,它是Activity B
。 Activity B
将使用非空包调用其Activity B
方法,该方法在应用程序进程被终止之前保存。堆栈中的其他活动(onCreate(savedInstanceState)
,LauncherActivity
)将不会被实例化,除非Activity A
完成自身而不启动其他新活动,例如用户只需按返回按钮即可。
问题是,许多基础模块在Activity B
和Application
中初始化。但在上述情况下,当用户重新打开应用时,Android系统会直接重新启动LauncherActivity
而不启动Activity B
。这将导致LauncherActivity
崩溃。
我必须在Activity B
中初始化一些基础模块,而不是LauncherActivity
。那么,有没有办法在应用程序被系统杀死后始终启动启动器活动?