gpt4 book ai didi

android - API 25 (7.1.1) 更改了 Activity 生命周期

转载 作者:可可西里 更新时间:2023-11-01 19:07:28 24 4
gpt4 key购买 nike

在我的 MainActivity 中,如果设置了 Intent 中的标志,我会打开一个对话框。如果对话框已创建,它将在 onPause()

中关闭
@Override
public void onPause() {
super.onPause();
if (_dialog!= null) {
_dialog.dismiss();
_dialog= null;
}
}

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intentContainsFlag) {
_dialog = ....;
_dialog.show();
}
}

如果按下 ListView 持有者的按钮并构建 Intent URI,将打开对话框:

bttn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// The URL scheme is registered in the intent filter
String intentString = "http://open.example.com/myParameters";
v.getContext().startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse(intentString)));
}
});

AndroidManigfest 包含:

<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="landscape" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="http" android:host="open.example.com" android:pathPattern=".*"/>
<data android:scheme="https" android:host="open.example.com" android:pathPattern=".*"/>
</intent-filter>
....

sdk版本设置为

minSdkVersion = 19
targetSdkVersion= 22
compileSdkVersion = 23
buildToolsVersion = 23

在 Android < 7.1.1 上,一切都按预期工作:onNewIntent() 被调用并且对话框可见。

但是在 7.1.1 上。设备调用 MainActivity 的 onNewIntent,然后直接调用 onPauseonResume。这意味着该 Activity 会自行打开/进入前台,但对话框会立即关闭。

一种可能的解决方法是在 onStop() 中关闭对话框,但我不明白为什么在 Android 7.1.1 上会发生这种情况 - 生命周期中发生了一些变化 ?

最佳答案

但是在 7.1.1 上。调用 MainActivity 的 onNewIntent 设备,然后直接调用 onPause 和 onResume。这意味着 Activity 会自行打开/进入前台,但对话框会立即关闭。

Android 框架可能会在后台或后台堆栈中随时破坏您的 Activity,您应该编写 Activity,以便它们在发生这种情况时能够正确运行。看看这个:

Don't keep activities under the Developer Options menu. When this option is enabled, the Android OS will destroy an activity as soon as it is stopped. It is intended to help developers debug their apps. For example, it can simulate the case that Android will kill an activity in the background due to memory pressure. In normal use, it is not recommended to turn this option on because this may lead to unexpected issues on the apps, such as freezes, force closes and reboots.

您的对话框本身会导致您的 Activity 暂停而不是关闭。

关于android - API 25 (7.1.1) 更改了 Activity 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45568207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com