自定义任务栈:BACK和UP键的区别

问题:应用程序A当允许外部的应用程序B,直接启动它的某些Activity时,就要适当的处理BACK和UP的导航行为。此时BACK和UP键就有区别了。


解决方案:

      Android支持库中的NavUtils和TaskStackBuilder类可以很容易地在程序中构建和生成合适的导航栈。这两个类的功能是在Android4.1及以后得版本原生的功能,如何要在稍早的版本上使用,可以使用提供的兼容库API,这样实际上也是调用原生的方法。

BACK和UP:

      Android导航有两种方式:一类是用户按下back建,另一类是在ActionBar(ToolBar)上按下home图标,也就是up动作。对于我们开发人员来说,经常会混淆他们,或者说不会去区分。 

从概念上讲:1)back键是让用户回到上一个浏览的界面(相对于当前界面),如果上一个界面属于另外一个程序,那么就会回到另外的程序 。2)up动作是返回到当前界面的父界面,也就是应用程序的界面栈。


用图来说明之间的区别:

自定义任务栈:BACK和UP键的区别_第1张图片
back/up导航图


步骤:1.点击A程序界面的三个Button中的任何一个,跳转到B程序的界面c,显示相应的text                  

          2.此时,点击Back键会回到A程序,点击Up键跳到界面c的父界面b                                                   

          3.在界面b,点击Back和Up键都会返回到b的父界面a                                                               

           说明:B程序有三个界面,a界面是b界面的父界面,b界面是c界面的父界面(a-->b-->c)


实现机制:


自定义任务栈:BACK和UP键的区别_第2张图片
程序A界面
自定义任务栈:BACK和UP键的区别_第3张图片
程序A代码

                                                                                               上面是A界面效果和代码


自定义任务栈:BACK和UP键的区别_第4张图片
程序B的清单文件 

清单文件说明:

         定义这种导航的第一步就是确定每个Activtity之间的父子关系。在Android4.1中,引入了android:parentActivityName属性来创建这种关系。要想在以前的版本中也使用这种功能,需要使用支持库定义的值来为每个Activtity定义父界面。在示例中采用了两种方式为每个Activity定义了父子关系,既可以运行本地的api上,也可以运行在支持库上。

         在DetailsActivity中还有一个自定义的,它允许外部的应用程序来启动DetailsActivity。


自定义任务栈:BACK和UP键的区别_第5张图片
程序B的a界面
自定义任务栈:BACK和UP键的区别_第6张图片
程序B的b界面
自定义任务栈:BACK和UP键的区别_第7张图片
程序B的c界面

Demo地址:  http://pan.baidu.com/s/1gfefm4j

你可能感兴趣的:(自定义任务栈:BACK和UP键的区别)