android intent 和 notification 以及home的关系

现在要做类似微信一样,无论从哪个页面进入聊天界面,返回的都是主界面的关系。

假设存在Main,A,Chat,三个AC,为了实现上述效果,最简单的方式为,Chat返回的时候重写Back处理,如MAIN的launchMode为singleTop, 返回的时候使用intent指向Main,添加CLEAR TOP  FLAF这样子,就清除了Main以上所有的AC,造成一种无论从哪里进入聊天界面,都返回Main页面的效果,注意,Chat页面应该配置为singleInstance,避免产生多个聊天页面。

到这里,我们解决了无论从哪里进入,都能返回Main AC的问题,但是这时候会遇到一旦从Chat页面返回MAIN 页面后,再进入其他页面A ,返回到Home,再进入App, 那么,会新生成一个Main页面,这时候,AC栈的情况为MAIN,A,MAIN,这明显不是我们想要的效果

为什么会这样子,这就涉及到intent action catxx两个属性,android在处理从Home进入App的时候,会检测目标Active的action以及catageroy属性是否和ANDROIDMANIFEST.XML中一致,如果一致,也仅仅把整个AC栈移动到前台,否则新建一个,注意,如果为singleTask则又不是一样,singleTask会直接清理Main上所有的AC,但是这个不是我们想要的效果。

所以,在Chat 返回Main的intent的添加和启动一致的action 和 catagory.

时间: 2024-12-22 03:27:42

android intent 和 notification 以及home的关系的相关文章

Android种使用Notification实现通知管理以及自定义通知栏(示例四)

示例一:实现通知栏管理 当针对相同类型的事件多次发出通知,作为开发者,应该避免使用全新的通知,这时就应该考虑更新之前通知栏的一些值来达到提醒用户的目的.例如我们手机的短信系统,当不断有新消息传来时,我们的通知栏仅仅是更改传来短信的数目,而不是对每条短信单独做一个通知栏用于提示. 修改通知 可以设置一条通知,当然可以更新一条通知,我们通过在调用NotificationManager.notify(ID, notification)时所使用的ID来更新它.为了更新你之前发布的通知,你需要更新或者创建

Android中使用Notification实现进度通知栏(示例三)

我们在使用APP的过程中,软件会偶尔提示我们进行版本更新,我们点击确认更新后,会在通知栏显示下载更新进度(已知长度的进度条)以及安装情况(不确定进度条),这就是我们今天要实现的功能.实现效果如下: 在代码实现功能前,我们先解释进度条的两种状态: (1)显示一个已知长度的进度条指示器(Displaying a fixed-duration progress indicator) 为了能够显示一个确定的进度条,通过调用setProgress() setProgress(max, progress,

Android Intent 解析之一

Intent的架构包括三方面: Client,也就是发送这个Intent的activity: Server,也就是activityManagerService.java,它主要是负责分发这些Intent给适当的对象: Target,也就是那些需要处理这个Intent的activity,我们称为Receiver: Intent的三个主要方面:Action.Data.Category在之前的文档中也有介绍,在此就不在叙述了. 下面回到前面的例子: Intent intent = new Intent

Android——Intent和Intent过滤器

http://www.cnblogs.com/XP-Lee/p/3613830.html Intent就是一个激活组件的消息对象,用于组件之间的通信.需要注意的是,能被Intent激活通信的组件只有三类:Activity.Service和BroadcastReceiver.对应这三类组件,Intent有下面三种使用场景: 启动Activity:在app中,一个Activity就代表一个用户界面.以Intent为参数调用startActivity()启动一个Activity实例.这个Intent告

什么时候加上android.intent.category.DEFAULT和LAUNCHER

转自:http://blog.csdn.net/ccccdddxxx/article/details/7843070 1.要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent. Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码: Intent intent= new Intent(this, B.class) Implicit Intent没有明确的指定要启动哪个Activity ,而

android开发之notification通知完全解析

android开发之notification通知完全解析 本文主要介绍的是notification通知的使用,通过阅读此文,你可以了解,在android开发中,notification通知各种使用方法.本文的notification主要是针对android4.4以下的版本. 现在,我们来看一下,如何实现一个notification.估计大家现在最常用的做法是下面这种: Notification notification = new Notification(R.drawable.ic_launc

Android 状态栏通知Notification

Notification可以在屏幕最顶部的状态栏上显示一个图标通知,通知的同时可以播放声音,以及振动提示用户,点击通知还可以返回指定的Activity. 今天例子的效果图: 布局main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" andro

android笔记:Notification通知的使用

通知(Notification),当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现. 发出一条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容. <第一行代码>中的Notification的构造方法.setLatestEventInfo等方法已经过时了,但是思想还是一致的. 具体做法如下: 1.需要一个 NotificationManager 来对通知进行管理,可以调用Context 的getSystemServi

Android 状态栏通知Notification、NotificationManager详解

在Android系统中,发一个状态栏通知还是很方便的.下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? 首先,发送一个状态栏通知必须用到两个类:  NotificationManager . Notification. NotificationManager :  是状态栏通知的管理类,负责发通知.清楚通知等. NotificationManager 是一个系统Service,必须通过 getSystemService()方法来获取. 1 <code>Notificat