在我的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持有者按钮并构建意图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上&lt; 7.1.1,一切都按预期工作:调用onNewIntent()
并且对话框可见。
但是在7.1.1。设备
调用MainActivity的onNewIntent
,然后直接调用onPause
和onResume
。这意味着活动自动打开/到达前台但对话框立即关闭。
一种可能的解决方法是关闭onStop()
中的对话框,但我不明白为什么会在Android 7.1.1上发生这种情况 - 在生命周期中发生了某些变化?
答案 0 :(得分:2)
似乎不同版本不在Android版本中。
如果你启用&#34;不要保持活动&#34;在开发人员设置中标记,然后生命周期将是下一个:
onCreate
onResume
* perform startActivityForResult
onPause
onDestroy
* returning result
onCreate
onResume
onPause
onNewIntent
onResume
因为onNewIntent
总是处于暂停状态。
答案 1 :(得分:2)
但是在7.1.1上。设备调用MainActivity的onNewIntent,然后直接调用onPause和onResume。这意味着活动打开/到达前台但对话框立即关闭。
Android框架可能会在后台或后台堆栈中破坏您的活动,您应该编写活动,以便在发生这种情况时它们正常运行。看看这个:
不要在“开发人员选项”菜单下保留活动。当这个 选项已启用,Android操作系统将尽快销毁活动 它被停止了。它旨在帮助开发人员调试他们的应用程序。对于 例如,它可以模拟Android将杀死活动的情况 在后台由于记忆压力。在正常使用中,它不是 建议打开此选项,因为这可能会导致意外 应用程序上的问题,例如冻结,强制关闭和重新启动。
您的对话框本身会导致您的活动暂停而非关闭。