startActivityForResult导致我的应用冻结某些设备

时间:2017-12-12 16:23:57

标签: android android-7.0-nougat android-7.1-nougat startactivityforresult android-vpn-service

我有特定于设备的问题。 我的应用程序启动startActivityForResult的意图,这适用于仅在某些Android 7设备上的几乎所有测试设备,这导致APP冻结,GUI不再做出反应。

代码如下所示:

private void executeAction() {

    if("connect".equals(mStringAction)){

        Intent intent = VpnService.prepare(MainActivity.this);

        if(intent != null){
            startActivityForResult(intent, REQUEST_CONNECT_VPN); // Leads to freeze on some devices like Bacon android 7.1.2 Lineage OS
        }else{
            onActivityResult(REQUEST_CONNECT_VPN, RESULT_OK, null);
        }

REQUEST_CONNECT_VPN是int,值为2

不幸的是,onActivityResult永远不会到达。在startActivityForResult内调用后,super. startActivityForResult (intent, requestCode);在应用中的断点后没有任何反应。在所有其他设备中,它会跳回onActivityResult

如果intent为null,则APP正常工作(跳过的代码部分除外)并且不会冻结。

所以我的问题是为什么大多数设备正确调用onActivityResult以及为什么它会导致另外一些Android 7设备被冻结?

编辑:

我发现startActivityForResult导致应用冻结在某些设备上,我现在将android:launchMode="standard">添加到清单中。这修复了一些不起作用的设备的冻结。但显然有一种观点,每次只会收到RESULT_CANCELED的更多设备。

0 个答案:

没有答案