博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android填坑-Activity:startActivityForResult启动其他launchMode的Activity无效果
阅读量:6695 次
发布时间:2019-06-25

本文共 1674 字,大约阅读时间需要 5 分钟。

问题描述

使用startActivityForResult方法连续启动launchMode为singleTop、singleTask、singleInstance模式的Activity都没有出现相应的launch效果。出现的效果是:会打开多个待启动的Activity。而通过startActivity方法连续启动却是正常的。

可能出现的场景(startActivityForResult)

  1. 用户快速连续点击启动按钮;
  2. 待启动的Activity需要一定的启动时间(比如插件化开发模式),导致用户以为没有触发,再次点击了启动按钮;

原因分析

测试方案

复制代码

启动方式:

public void startForResult(View view) {        new Handler().postDelayed(new Runnable() {            @Override            public void run() {                Intent intent = new Intent(MainActivity.this, SecondActivity.class);                startActivityForResult(intent, 1);            }        }, 1000); // 1s延时主要是为了看启动效果    }    public void start(View view) {        new Handler().postDelayed(new Runnable() {            @Override            public void run() {                Intent intent = new Intent(MainActivity.this, SecondActivity.class);                startActivity(intent);            }        }, 1000);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        Log.d(TAG, "onActivityResult: " + requestCode);    }复制代码

测试结果

startActivityForResult对singleTop、singleTask、singleInstance模式都表现为standard的效果。

查看栈信息:(以singleInstance为例)
startActivity一次:

startActivity多次:
startActivityForResult一次:
startActivityForResult多次:

结果分析

startActivityForResult在低版本(好像5.0之前)有个问题:startActivityForResult所启动的Activity如果是singleTask或者singleInstance的,会立马回调onActivityResult,返回cancel;高版本为了兼容singleTask和singleInstacne模式,把这两种模式都转成standard模式来处理了;所以启动效果就和standard模式一样。

解决方案

暂时没有想到怎么通过startActivityForResult方法启动单例模式的Activity,欢迎大神们解惑!

转载地址:http://fmvoo.baihongyu.com/

你可能感兴趣的文章
SpringMVC视图解析器概述
查看>>
SQL Server 自动化运维系列 - 监控磁盘剩余空间及SQL Server错误日志(Power Shell)...
查看>>
English Phonetic Spelling Alphabet
查看>>
linux下访问ftp服务器和文件传输
查看>>
极力推荐python初学者使用wingIDE
查看>>
[NOIP2014] 普及组
查看>>
HDU 1017 A Mathematical Curiosity【水,坑】
查看>>
ASP.NET JsonHelper类
查看>>
加密算法整理概述
查看>>
gridlayout小例子
查看>>
微信小程序 + Bmob后端云
查看>>
EntityFramework之原始查询如何查询未映射的值,你又知道多少?
查看>>
怎么使用T-sql生成两位字母
查看>>
自己动手编译octave 4.0.0
查看>>
【Java自学笔记系列:数组】
查看>>
Django之url路由
查看>>
二叉树的所有路径
查看>>
java反射机制的原理与简单使用
查看>>
CentOs
查看>>
Dockerfile编写(备份)
查看>>