- 浏览: 365798 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
驭乐MJ:
你好,我卸载rar后,按命令执行安装unrar或者是p7zip ...
Ubuntu rar 乱码问题 -
郭建雄:
不错,受用了,谢谢你的分享 !
java线程中的interrupt,isInterrupt,interrupted方法 -
zuosheng:
...
用ViewFlipper实现各种切换动画 -
lxtkong-029:
原来一直不是很清楚,看来你的文章明白了,太感谢了!
java线程中的interrupt,isInterrupt,interrupted方法 -
ihopethatwell:
嗯,看到了,要在项目中添加jni
Ubuntu 10.04安装android NDK
1. Task是包含一系列Activity的堆栈, 遵循先进后出原则. 2. Task默认行为: (1) 前提: Activity A和Activity B在同一个应用中. 操作: Activity A启动开僻Task堆栈(堆栈状态: A), 在Activity A中启动Activity B(堆栈状态: AB), 按下BACK返回键(堆栈状态: A). (2) 前提: Activity A和Activity B在同一个应用中, 应用名称为"TaskOne应用". 操作: 在Launcher中单击"TaskOne应用"图标, Activity A启动开僻Task堆栈, 命名为TaskA(TaskA堆栈状态: A), 在Activity A中启动Activity B(TaskA堆栈状态: AB), 长按Home键, 返回Launcher, 启动其它应用(如:电子书), 开僻一个新Task堆栈, 命名: TaskB, 长按Home健, 返回Launcher, 单击"TaskOne应用"图标, 此时TaskA堆栈返回前台, Activity B为栈顶应用, 供用户使用. (3) 前提: Activity A在名称为"TaskOne应用"的应用中, Activity C在名称为"TaskTwo应用"的应用中. 操作: 在Launcher中单击"TaskOne应用"图标, Activity A启动开僻Task堆栈, 命名为TaskA(TaskA堆栈状态: A), 在Activity A中启动Activity C(TaskA堆栈状态: AC),长按Home键, 返回Launcher, 启动"TaskTwo应用"即Activity C, 开僻新的Task堆栈, 命名为TaskB, 按BACK键返回Launcher, 单击"TaskOne应用"图标, 此时TaskA堆栈返回前台, Activity B为栈顶应用, 供用户使用. 3. Intent FLAG介绍: (1) FLAG_ACTIVITY_NEW_TASK: a. 前提: Activity A和Activity B在同一个应用中. 操作: Activity A启动开僻Task堆栈(堆栈状态: A), 在Activity A中启动Activity B, 启动Activity B的Intent的Flag设为 FLAG_ACTIVITY_NEW_TASK, Activity B被压入Activity A所在堆栈(堆栈状态: AB). 原因: 默认情况下同一个应用中的所有Activity拥有相同的关系(taskAffinity). b. 前提: Activity A在名称为"TaskOne应用"的应用中, Activity C和Activity D在名称为"TaskTwo应用"的应用中. 操作1: 在Launcher中单击"TaskOne应用"图标, Activity A启动开僻Task堆栈, 命名为TaskA(TaskA堆栈状态: A), 在Activity A中启动Activity C, 启动Activity C的Intent的Flag设为FLAG_ACTIVITY_NEW_TASK, Android系统会为Activity C开僻一个新的Task, 命名为TaskB(TaskB堆栈状态: C), 长按Home键, 选择TaskA, Activity A回到前台, 再次启动Activity C, 这时TaskB回到前台, Activity C显示, 供用户使用, 即: 包含FLAG_ACTIVITY_NEW_TASK的Intent启动Activity的Task正在运行, 则不会为该Activity创建新的Task, 而是将原有的Task返回到前台显示. 操作2: 在Launcher中单击"TaskOne应用"图标, Activity A启动开僻Task堆栈, 命名为TaskA(TaskA堆栈状态: A), 在Activity A中启动Activity C,启动Activity C的Intent的Flag设为FLAG_ACTIVITY_NEW_TASK, Android系统会为Activity C开僻一个新的Task, 命名为TaskB(TaskB堆栈状态: C), 在Activity C中启动 Activity D(TaskB的状态: CD) 长按Home键, 选择TaskA, Activity A回到前台, 再次启动Activity C, 这时TaskB回到前台, Activity D显示,供用户使用. (2) FLAG_ACTIVITY_CLEAR_TOP: 前提: Activity A, Activity B, Activity C和Activity D在同一个应用中. 操作: Activity A启动开僻Task堆栈(堆栈状态: A), 在Activity A中启动Activity B(堆栈状态: AB), 在Activity B中启动 Activity C(堆栈状态: ABC), 在Activity C中启动Activity D(堆栈状态: ABCD), 在Activity D中启动Activity B, 启动Activity B的Intent的Flag设置为FLAG_ACTIVITY_CLEAR_TOP, (堆栈状态: AB). (3) FLAG_ACTIVITY_BROUGHT_TO_FRONT: 前提: Activity A在名称为"TaskOne应用"的应用中, Activity C和Activity D在名称为"TaskTwo应用"的应用中. 操作: 在Launcher中单击"TaskOne应用"图标, Activity A启动开僻Task堆栈, 命名为TaskA(TaskA堆栈状态: A), 在Activity A中启动Activity C,启动Activity C的Intent的Flag设为FLAG_ACTIVITY_NEW_TASK, Android系统会为Activity C开僻一个新的Task, 命名为TaskB(TaskB堆栈状态: C), 在Activity C中启动 Activity D(TaskB的堆栈状态: CD), 长按Home键, 选择TaskA, Activity A回到前台, 在Activity A中再次启动Activity C, 在启动Activity C的Intent中设置Flag为FLAG_ACTIVITY_BROUGHT_TO_FRONT, TaskB回到前台, Activity C显示, (TaskB的堆栈状态: C). (4) FLAG_ACTIVITY_MULTIPLE_TASK: 与FLAG_ACTIVITY_NEW_TASK结合使用, 首先在Intent中设置FLAG_ACTIVITY_NEW_TASK, 打开Activity, 则启动一个新Task, 接着在Intent中设置FLAG_ACTIVITY_MULTIPLE_TASK, 再次打开同一个Activity,则还会新启动一个Task. (5) FLAG_ACTIVITY_SINGLE_TOP: 当前Task堆栈中存在ABCD四个Activity, A是栈顶Activity, D为栈底Activity, 存在打开A的Intent中设置了 FLAG_ACTIVITY_SINGLE_TOP标志, 则会使用栈顶A, 而不会从新New A. (6) FLAG_ACTIVITY_RESET_TASK_IF_NEEDED: 例: 存在Activity A, Activity B, Activity C, Activity A启动开僻Task堆栈, 命名为TaskA(TaskA堆栈状态: A), 在Activity A中启动Activity B(TaskA堆栈状态: AB), 接着Activity B启动Activity C(TaskA堆栈状态: ABC), 启动Activity C的Intent中设置FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET标题, 这样TaskA中有一个还原点, 当有包含FLAG_ACTIVITY_RESET_TASK_IF_NEEDED的Intent请求TaskA堆栈时(比如请求Activity A) 系统就会将还原点以上的Activity清除, TaskA堆栈中只剩下了AB. 4. launchMode介绍: (1) standard: 如果启动此Activity的Intent中没有设置FLAG_ACTIVITY_NEW_TASK标志, 则这个Activity与启动他的Activity在同一个Task中, 如果设置了Activity请参考上面FLAG_ACTIVITY_NEW_TASK的詳細说明,"launchMode"设置为"standard"的 Activity可以被实例化多次, 可以在Task中的任何位置, 对于一个新的Intent请求就会实例化一次. (2) singleTop: 如果启动此Activity的Intent中没有设置FLAG_ACTIVITY_NEW_TASK标志, 则这个Activity与启动他的Activity在同一个Task中, 如果设置了Activity请参考上面FLAG_ACTIVITY_NEW_TASK的詳細说明,"launchMode"设置为"singleTop"的Activity可以被 实例化多次, 可以在Task中的任何位置, 对于一个新的Intent请求如果在Task栈顶, 则会用栈顶的Activity响影Intent请求, 而不会重新实例化对象接收请求, 如果没有在栈顶, 则会实例化一个新的对象接收Intent请求. (3) singleTask: "launchMode"设置为"singleTask"的Activity总是在栈底, 只能被实例化一次, 它允许其它Activity压入"singleTask"的Activity 所在的Task栈,如果有新的Intent请求有此标志的Activity, 则系统会清除有此标志的Task栈中的全部Activity,并把此Activity显示出来. (4) singleInstance: launchMode"设置为"singleInstance"的Activity总是在栈底, 只能被实例化一次, 不允许其它的Activity压入"singleInstance" 的Activity所在Task栈, 即整个Task栈中只能有这么一个Activity. 5. taskAffinity属性: (1) taskAffinity属性应和FLAG_ACTIVITY_NEW_TASK标志及allowTaskReparenting属性结合使用, 如果只使用taskAffinity属性, 请参考上面Task默认的行为. (2) 与FLAG_ACTIVITY_NEW_TASK标志结合: a. 前题: Activity A和Activity B在同一个应用中, Activity A与Activity B设置不同的taskAffinity属性. 操作: Activity A启动开僻Task堆栈,命名为TaskA(TaskA堆栈状态: A), 在Activity A中启动Activity B, 启动Activity B 的Intent中设置FLAG_ACTIVITY_NEW_TASK标志,这时系统会新开僻一个Task堆栈,TaskB(TaskB堆栈状态: B). b. 前题: Activity A在"TaskOne应用"中, Activity C在"TaskTwo应用"中, Activity A和ActivityC设置了相同的taskAffinity属性. 操作: Activity A启动开僻Task堆栈,命名为TaskA(TaskA堆栈状态: A), 在Activity A中启动Activity C, 启动Activity C的 Intent中设置FLAG_ACTIVITY_NEW_TASK标志,这时Activity C会压入与Activity A堆栈相同的TaskA堆栈(TaskA堆栈状态: AC). (3) 与allowTaskReparenting属性: 例: 在"TaskOne应用"中有一个天气预报Activity A, Activity A与"TaskOne应用"中的其它Activity有默认的关系 (taskAffinity属性都没有设置), 并且allowTaskReparenting属性设置为true, 现在存在一个"TaskTwo应用 "启动了"TaskOne应用"中的天气预报Activity A, 这时Activity A与"TaskTwo应用"中的Activity在同一个Task, 命名这个Task堆栈为TaskA, 这时"TaskOne应用"启动, 并且又打开发天气预报Activity A, 这时Activity A会从TaskA堆栈中转移到 "TaskOne应用"所在的堆栈, 即Activity A可以在多个堆栈中来回转移. 如果Task堆栈中的Root Activity设置了此属性值为true, 不管出现任何情况, 一直会保留Task栈中Activity的状态. 7. clearTaskOnLaunch属性: 如果Task堆栈中的Root Activity设置了此属性值为true, 只要你一离开这个Task栈, 则系统会马上清理除了Root Activity的全部Activity. 8. finishOnTaskLaunch属性: 如果某Activity设置了finishOnTaskLaunch属性, 只要你一离开这个Task栈, 则系统会马上清除这个Activity, 不管这个Activity在堆栈的任何位置.
6. alwaysRetainTaskState属性:
发表评论
-
通过FutureTask设置超时,用于请求网络,执行任何异步超时任务
2013-10-10 15:53 0public class TestConnectTimeOu ... -
使用Eclipse调试Android Native Application
2013-07-08 21:31 0由于最近需要调试C++程序,以后都是暴力调试的,暴力调 ... -
Android新版NDK环境配置(免Cygwin)
2013-07-05 08:41 0前言:Android NDK r7及以上的版本已经集成 ... -
scroller 滚动效果
2013-04-25 14:22 0package com.testalaph; i ... -
点9 ondraw bitmap
2013-04-17 14:26 0private void init(Context ... -
点9 ondraw bitmap
2013-04-17 14:20 0点9图片ondraw画: private void ... -
通过activityGroup动态管理activity
2013-01-20 15:54 0// @Override // protected v ... -
scroller text view 滚动文字
2012-12-08 10:18 0package com.sc; import an ... -
android 截屏
2012-11-05 14:16 0//截屏2 private Bitmap jieping2 ... -
Android下Dialog及Activity屏蔽Home键详解
2011-12-13 11:53 0屏蔽其他键,重写onKeyDown Java代码 ... -
clipRect 介绍
2011-12-02 14:13 6729android的clip有以下两点疑问: Clip(剪切)的 ... -
android知识整理
2011-11-03 10:06 11. android单实例运行方 ... -
Android 使用junit测试
2011-08-05 16:18 954使用方式也非常的简单,只需要在AndroidManifest ... -
Android开发:调试工具集
2011-08-05 15:07 18341. 查看当前堆栈1) 功能:在程序中加入代码,使可以在log ... -
Android中attr自定义属性详解
2011-07-12 16:23 38788<LinearLayout xmlns:android= ... -
Drawable Mutations(Android Drawable 深入分析)
2011-07-11 11:08 1658Android's drawables对编写 ... -
检查系统是否安装某app
2011-07-11 10:45 965/** * Indicates whether th ... -
ImageView的scaletype属性
2011-07-07 13:21 862ImageView的属性android:scaleType ... -
Android UI --- 设置ProgressBar的颜色
2011-07-04 14:26 1285基本原理是在drawable目录中建立一个xml文件,描述一下 ... -
关于android的ListView优化
2011-06-24 16:58 11241.去除ListView的黑色间隔线 vie ...
相关推荐
"Android Task 进程与线程详解" Android 中的 Task 概念是指一组以栈的模式聚集在一起的 Activity 组件集合,具有潜在的前后驱关联。Task 的主要作用是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种...
此外,还可以通过Intent的FLAG_ACTIVITY_*系列标志来动态控制启动行为,比如FLAG_ACTIVITY_NEW_TASK或FLAG_ACTIVITY_SINGLE_TOP。 理解并灵活运用这些启动模式,可以帮助开发者更好地控制Activity的生命周期,提高...
Task在运行时只与Activity有关,它是由一组相互关联的Activity组成,这些Activity被放置在同一个任务栈中。Activity的启动模式决定了它们在任务栈中的行为方式,从而影响用户操作流程和应用的切换。 Process是指...
8. **Intent Flag**:Intent的Flag可以控制Activity的行为,如FLAG_ACTIVITY_NEW_TASK用于创建新Task,FLAG_ACTIVITY_CLEAR_TOP则会清除所有位于目标Activity之上的Activity。 9. **Activity间的通信**:除了Intent...
为了更深入地理解这些模式,开发者需要掌握Android的Activity栈管理机制,即任务(Task)和回退栈(Back Stack)。任务是Android系统用来组织Activity的容器,每个任务都有一个回退栈,栈顶的Activity是当前活动的。...
如果设置为 `true`,则启动 Activity 时会清空整个 Task,只保留启动的 Activity;如果设置为 `false`(默认值),则 Task 中的其他 Activity 不会被清空。 **应用场景:** - **单 Activity 应用场景:**对于只需要...
- **定义**:指定 `Activity` 与 `Task` 的关联性。 - **作用**:当用户启动一个新的 `Activity` 时,如果设置了 `taskAffinity`,那么新的 `Activity` 将被添加到指定 `Task` 中;如果没有设置,则默认加入当前 `...
在Android应用开发中,Activity是Android四大组件之一,它是用户界面的主要载体,承载着与用户交互的核心功能。...通过阅读"Activity活动详解总结博客文章源程序",您将能够获取更多关于Activity的实践经验和技巧。
2. `FLAG_ACTIVITY_CLEAR_TASK`:结合`FLAG_ACTIVITY_NEW_TASK`使用,它会清除与目标Activity相关的整个任务栈,使新Activity成为新任务的根。 3. `FLAG_ACTIVITY_CLEAR_TOP`:如果目标Activity已经在栈中,这个...
在该模式下,每次启动Activity时,系统都会创建一个新的实例,并将其压入任务栈(Task Stack)顶部。即使目标Activity已经存在任务栈中,系统也会创建新的实例,而不是复用已有的。 2. **任务栈与Activity的关系** ...
startActivity方法还可以设置Activity的启动标志位,例如“Intent.FLAG_ACTIVITY_NEW_TASK”,便于他可以在一个新的任务中启动。 Android Activity的启动过程是一个复杂的过程,涉及到多个组件之间的交互和协作。...
### Activity属性设置详解 在Android应用开发中,`Activity`作为四大组件之一,承载着界面交互的主要职责。正确地配置`Activity`的各种属性对于优化用户体验、提升应用性能至关重要。本文将详细解读`Activity`的...
在Android程序设计中,Activity是构成应用程序核心功能的基本组件,它代表用户界面的一个屏幕,用户可以与之交互完成特定任务。本讲解主要围绕Activity、Intent以及数据存储等方面展开,以创建一个简单的记事本应用...
### Android Activity与Intent详解 #### 一、Activity与Intent的基础概念 **Activity** 在 Android 开发中扮演着至关重要的角色,它是四大组件之一,代表了一个应用程序的用户界面的一部分。一个 Activity 通常...
在四种主要的启动模式中,`singleTask`是一种特殊且重要的模式,它涉及到任务(Task)和返回栈(Back Stack)的概念。在本文中,我们将深入探讨`singleTask`模式的功能、使用场景以及如何实现。 `singleTask`启动...
### Android Activity 的四种启动模式与 Intent.setFlags()详解 #### 一、Android Activity 四种启动模式 在 Android 应用开发中,Activity 是构成应用的基本单元之一,它负责显示用户界面并处理用户交互。为了更...
6. **Activity栈管理**:了解Task和Back Stack的概念,以及如何通过FLAG控制Activity的堆栈行为。 7. **异常处理**:学习如何处理Activity启动过程中的异常,例如没有找到匹配的Activity或权限问题。 8. **实践...
首先,了解Android的任务(Task)和返回栈(Back Stack)的概念。任务是一个包含一系列Activity的集合,这些Activity按照它们被启动的顺序被压入栈中,最后一个启动的Activity位于栈顶。当用户按下返回键或调用`finish()...
在Android应用开发中,`LaunchMode`是一个至关重要的概念,它决定了Activity如何启动以及与任务栈(Task Stack)之间的交互。本篇文章将深入探讨`LaunchMode`的不同模式及其实际应用场景,通过实例`LaunchModeDemo`...