android中activity启动模式遇到的坑
来源:互联网 发布:软件项目团队管理 编辑:程序博客网 时间:2024/05/22 02:11
写这些东西其实是我要离职,正在重新复习以前的东西,并且将自己在前一家公司遇到的一些问题记录下来.
先大致的来了解一下android中4中启动模式:
- standard:这种启动模式对于我们的activity来说是最常用的,不进行配置也默认是这种启动模式,这种启动模式就是每一次启动activity都会创建一个activity的实例,并将它放到栈中(startactivity()).
- singleTop:这种启动模式主要是用于当我们栈顶存在这个activity的实例是,就不创建,直接进行复用.
- singleTask:这种启动模式作用是:当我们的栈中存在这个activity的实例时,我们就复用这个activity,并且栈中在这个activity之上的实例都会被移除栈.
- singleInstance:当使用这种启动模式时,就是我们会为这个activity单独创建一个栈,用来存放当前的activity的实例,这个任务栈中必定只有这一个singleInstance类型的Activity.
简单的复习了下启动模式,接下来进入正题.
记得刚来这家公司时,公司让我接手的是一个直播类的项目,在这个项目中有这么一个功能,这个功能差不多每个app上都有,但是当时自己没碰到,所以没有深究,这个功能是从本地图库中选择视频或者是选择图片上传到服务器.
当时我们我这个app有3个地方用到了这个功能,但是其中有一个上传图片失败,开始以为是代码问题,另外一个地方上传成功,这就不是代码问题了,后面查找到了资源文件哪里,对比发现多了一个配置:
android:launchMode=”singleTask”
就是这个启动模式,让我们的上传图片失败,配置了这个属性的activity,我们不能用startActivityForResult()启动,我们从系统图库中选择图片就是通过startActivityForResult(),为什么通过这种方式就出问题了呢?
假设 singleTask 类型的Activity的taskAffinity属性设置的为另一个Task启动,并且这个Task不是空。那么它下面就还有其他Activity,当结束该singleTask 类型的Activity的时候,那么出现的将是另一个完全不相干的Activity而不是启动singleTask 类型的Activity。为了防止这种情况的发生。所以规定不许这么做.
ok,今天总结自己项目中的一个小问题,就到这了.
0 0
- android中activity启动模式遇到的坑
- 【android】android中activity的启动模式
- android中activity的启动模式
- Android中Activity的启动模式详解
- Android中activity的启动模式详解
- Android开发中Activity的启动模式
- Android中Activity的启动模式
- Android中Activity的启动模式
- android 中activity详细的启动模式
- Android中Activity的启动模式
- Android中activity的启动模式
- android中activity的启动模式
- Android 中Activity 的启动模式
- Android中activity的启动模式.md
- Android中Activity启动模式
- Android中Activity启动模式
- Android中Activity启动模式
- Android 中 Activity 启动模式
- JSP的九个内置对象和四个作用域
- 使用spymemcached spring整合的时候遇到的一个配置问题
- Kibana基本使用
- docker基础操作命令
- 练习
- android中activity启动模式遇到的坑
- Android通过栈对Activity进行管理避免内存溢出
- cmake简单用法
- 车牌识别--倾斜矫正
- 【Java开发手册之MySQL规约(一)】建表规约
- bzoj2179 FFT快速傅立叶
- 对/etc/oratab文件的理解
- PHP反射机制实现自动依赖注入
- Java yahoo 雅虎 股票接口获取股票交易数据