使用下面的代码可以做到跟点击app应用图标一样的效果,(如果在后台 就带到前台, 如果没有就打开新的app)
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setClass(this, Main.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
引用
除了 setClass 可以换成使用 setClassName 绑定,FLAG_ACTIVITY_RESET_TASK_IF_NEEDED可以不设,其他的选项都缺一不可。设置ACTION_MAIN与CATEGORY_LAUNCHER是把该Intent发给了系统对应创建程序的模块,然后系统该模块根据设定的包与类信息还有flags进行处理。当然所有的Intent工作原理都是这样,只是对 ACTION_MAIN - CATEGORY_LAUNCHAR 的处理较为特殊,使得总是显示Task栈顶的Activity而不是setClass设定的Activity类。
http://www.cnblogs.com/SteveMing/archive/2012/04/24/2459575.html
http://developer.android.com/guide/components/tasks-and-back-stack.html
分享到:
相关推荐
本篇文章将详细探讨`Intent.FLAG`的全集,帮助开发者深入理解这些标志如何影响Intent的执行流程。 1. **FLAG_ACTIVITY_NEW_TASK** 这个标志用于启动一个新的任务栈,通常与主Activity关联,表示打开一个全新的应用...
本篇将深入探讨`Activity`的启动模式和`Intent`的`Flag`属性对`Intent`传值的影响。 1. **Activity启动模式**: - **Standard**(标准模式):默认模式,每次启动新的实例,无论当前栈中是否存在该Activity。 - *...
- 可能还涉及到Intent Flag的使用,如`FLAG_ACTIVITY_NEW_TASK`、`FLAG_ACTIVITY_CLEAR_TOP`等,控制Activity的启动行为。 5. **IntentFilter** 对于隐式Intent,接收者需要通过IntentFilter声明可以响应哪些...
- `setFlags()`: 设置Intent的标志,影响Intent的处理方式,如FLAG_ACTIVITY_NEW_TASK用于在新的任务栈中启动Activity。 5. **启动Activity** 使用`startActivity(Intent)`方法启动一个Activity。如果Intent是...
本文将详细介绍`Intent`的一些常见用法及其相关知识点。 #### 一、从BroadcastReceiver启动一个新的Activity 在某些场景下,可能需要从BroadcastReceiver启动一个新的Activity。为了正确地进行这一操作,需要注意...
Intent的Flag可以改变启动行为,例如`FLAG_ACTIVITY_NEW_TASK`用于在新的任务栈中启动Activity,`FLAG_ACTIVITY_CLEAR_TOP`则会在目标Activity所在的任务栈顶重新打开该Activity,清除其上的所有Activity。...
本资源包“Android应用源码之Intent_Intent.zip”应该包含了关于Intent使用的一些示例代码和解析,帮助开发者深入理解Intent的工作原理。 1. **Intent的类型** Intent主要有两种类型:显式Intent和隐式Intent。...
5. **Intent Flag**:Intent还支持各种Flag,用来控制启动行为。比如`FLAG_ACTIVITY_NEW_TASK`用于在新的任务栈中启动Activity,`FLAG_ACTIVITY_CLEAR_TOP`用于清除栈顶到目标Activity之间的所有Activity。 6. **...
Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化对象,Parcelable与Serializable。 Intent传递数据时,如果数据太大,可能会出现异常。比如App闪退,或是Intent发送不成功,logcat...
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); ``` 2. `FLAG_ACTIVITY_CLEAR_TOP`:当目标Activity已经在任务栈中时,会把栈顶到目标Activity的所有Activity都移除,然后重新创建目标...
在Android开发中,Intent是一种非常重要的组件间通信机制。它被用来启动活动(Activity)、服务(Service)或者广播接收器(Broadcast Receiver),并且可以传递数据和执行动作。本篇文章将详细解析Intent的用法。 ...
- Intent的Flag可以控制启动行为,例如`FLAG_ACTIVITY_NEW_TASK`表示在新的任务栈中启动Activity,`FLAG_ACTIVITY_CLEAR_TOP`表示如果目标Activity已经在栈顶,则清除其上面的所有Activity。 6. **Intent Filter**...
Intent Flag可以控制Activity的启动行为,例如`FLAG_ACTIVITY_NEW_TASK`表示在新的任务栈中启动Activity,`FLAG_ACTIVITY_CLEAR_TOP`表示清除栈顶到目标Activity之间的所有Activity。 8. **Intent Filter** 隐式...
本教程将深入探讨Intent类的一些核心成员变量,帮助开发者更好地理解和利用Intent来构建功能丰富的Android应用。 1. **Intent类的创建与分类** - `Intent` 类可以通过构造函数初始化,比如 `Intent(context, Class...
5. Flags:标志位,用于设置Intent的行为,如FLAG_ACTIVITY_NEW_TASK用于启动新的任务栈,FLAG_ACTIVITY_CLEAR_TOP用于重新启动目标活动并清除其上面的所有活动。 三、Intent的创建与使用 1. 创建Intent:可以通过...
it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File("/sdcard/images/001041580.jpg")); it.setDataAndType(uri, "image/*"); * 打开视频文件: Intent it = new Intent("android....
7. **Intent Flag** - FLAG_ACTIVITY_NEW_TASK:启动新的任务栈。 - FLAG_ACTIVITY_CLEAR_TOP:清除栈顶Activity并返回到该Activity。 - FLAG_ACTIVITY_SINGLE_TOP:如果目标Activity已经在栈顶,不创建新实例。 ...
6. **Intent Flag** - FLAG_ACTIVITY_NEW_TASK:启动新的任务栈,通常用于启动主Activity。 - FLAG_ACTIVITY_CLEAR_TOP:如果目标Activity已经在栈中,那么移除其上面的所有Activity,然后重新启动目标Activity。 ...
- 创建Intent并设置其动作为`VIEW`,同时添加默认分类(category)和标志(flag)`FLAG_ACTIVITY_NEW_TASK`,这样当Intent被触发时,将会在一个新的任务栈中启动一个新的Activity。 - 创建URI对象,这里使用的是`Uri...
Intent的Flag可以改变Intent的行为,例如FLAG_ACTIVITY_NEW_TASK开启新的任务栈,FLAG_ACTIVITY_CLEAR_TOP则会清除当前任务栈上的所有Activity。 9. **Intent的安全性**: 鉴于Intent的跨组件通信特性,开发者...