Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android API 25(7.1.1)改变了活动生命周期_Android_Android Intent_Android Alertdialog_Android Lifecycle_Android 7.1 Nougat - Fatal编程技术网

Android API 25(7.1.1)改变了活动生命周期

Android API 25(7.1.1)改变了活动生命周期,android,android-intent,android-alertdialog,android-lifecycle,android-7.1-nougat,Android,Android Intent,Android Alertdialog,Android Lifecycle,Android 7.1 Nougat,在我的MainActivity中,如果设置了意图中的标志,就会打开一个对话框。如果创建了该对话框,则会在onPause()中取消该对话框。 如果按下ListView持有者的按钮并生成意向URI,则将打开该对话框: bttn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // The URL scheme is r

在我的MainActivity中,如果设置了意图中的标志,就会打开一个对话框。如果创建了该对话框,则会在
onPause()中取消该对话框。

如果按下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>
....
在Android<7.1.1上,一切正常:
onNewIntent()
被调用,对话框可见

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


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

似乎Android版本中没有差异

如果在开发人员设置中启用“不保留活动”标志,则生命周期将是下一个:

onCreate
onResume
* perform startActivityForResult
onPause
onDestroy
* returning result
onCreate
onResume
onPause
onNewIntent
onResume
因为onNewIntent总是处于暂停状态。

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

Android框架可能会在任何时候在后台或后台破坏您的活动,您应该编写您的活动,以便它们在发生这种情况时能够正确运行。看看这个:

不要将活动放在“开发人员选项”菜单下。当这 选项启用后,Android操作系统将尽快销毁活动 它停止了。它旨在帮助开发者调试他们的应用程序。对于 例如,它可以模拟Android将杀死一个活动的情况 在后台由于内存压力。在正常使用中,它不是 建议启用此选项,因为这可能会导致意外情况 应用程序上的问题,如冻结、强制关闭和重新启动


对话框本身导致活动暂停而不是关闭。

您可以在github发布一个具有这种行为的简单项目吗?可能是对话框本身导致活动暂停吗?为什么不调用
onStart()
minSdkVersion = 19
targetSdkVersion= 22
compileSdkVersion = 23
buildToolsVersion = 23
onCreate
onResume
* perform startActivityForResult
onPause
onDestroy
* returning result
onCreate
onResume
onPause
onNewIntent
onResume