Back

  在导航页面的制作方面,WPhone比Android在开发过程中体现地更加人性化,微软的API中有一个Go Back方法,能够使你回到之前的界面,即Back堆栈中的最新条目。如果Back堆栈中没有任何条目,则此方法将引发异常,所以在调用此方法前,始终都要检查 Can Go Forward。而Android中Activity本身也有一个栈对象对相应的Activity进行管理。

  但Android程序员必须在onKey事件中对相应的事件进行监听,判断按下的键是不是Back键来决定是否执行回退操作。

  Android中运行的程序无需刻意地去退出,当按下手机的Back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity。当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法进行创建,当栈中所有Activity都弹出结束后,应用也就随之结束了。如果说程序中存在Service之类的,则可以在恰当的位置监听处理下也就可以了。

  相信看这篇文章的人中现在还在用诺基亚的很少了吧,所以接下来通过我的诺基亚手机的各种操作截图来说明两者之间的区别。

  首先来看百度和微信首次点击Back键的效果图:

                                

  WPhone并不会像Android那样:只是将目标Activity从堆栈中销毁,但是当你按最右边的菜单键键(Home键右边,手机下方总共三个键)时,还是可以看到这个Activity的。如果你点击它,又会重新回到Activity的最前面成为当前的活动。

  来看看Android手机上对应用点击了Back或Home键后再点击菜单键的效果图:

  这里需要注意,这个过程中Activity是重新生成的,关键体现在其启动类的在onCreate()方法中的SavedInstanceState的值此时是null(而Home键情况不同,在后面会进行讲解)。

  而从图中可以发现,WPhone采取的策略是要么取消回退,要么直接退出应用程序。

  其实,这也体现在了手机最下方的按键设计上,WPhone三个键分别为Back,Home及Search,并没有菜单键。没错,是搜索按键,当我安装了Beta(语音辅助软件)后,点击Search按键就会弹出Beta的服务界面。

Home

  至于Home键,WPhone和Android倒是没有多大的区别,功能上几乎一致:点击后直接回到主界面,将当前应用压入Activity堆栈中,此时的WPhone也不会强制将应用关闭了。

  Android点击菜单键出现的效果,WPhone中自然也会有,不然怎么关闭点击Home键后依然存在的Activity呢。在WPhone中,若想要看到到底有哪些应用界面依然存在,方法是长按Back键。效果图如下:

  此时,若想将某个应用重新打开,那么只要在其界面区域单击即可;若想关闭,就点击对应界面右上角的圆形叉叉。

代码

  上面提到过,Android在点击Back和Home键之后,让应用重新回到活动状态的过程是不一样的。

  这里给出在onCreate()方法中进行判断的代码:

 1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3   super.onCreate(savedInstanceState); 4   setContentView(R.layout.activity_main); 5   if (savedInstanceState == null) { 6     Toast.makeText(this, "savedInstanceState is null", Toast.LENGTH_SHORT).show(); 7   } 8   else { 9     Toast.makeText(this, "savedInstanceState is not null", Toast.LENGTH_SHORT).show();10   }11 }

  若之前是点击Back,那么在界面上会显示"savedInstanceState is null",否则会显示"savedInstanceState is not null"。

总结

  最后再来说说WPhone和Android的图标布局方式吧。先上图:

  可以看到,WPhone是采用上下的竖排方式,不像Android是左右的翻页样式。也就是说,添加得越多,这一页就会越长,在寻找应用图标时就只能上下滚动。

  这里有必要再说一下,在应用图标的排布方面Android和IOS是相似的,采用页面左右滑动的设计;而在重新唤醒或彻底关闭Acticity堆栈中的应用时,WPhone和IOS是相似的,将应用界面左右排布,不过两者的区别在于:

  1、WPhone是长安Back键跳出所有应用界面,IOS是连续、快速地点击两次Home键;

  2、WPhone是点击关闭按钮或者向下滑动应用界面,IOS是将应用界面向上滑动;

  但是,也有其有意思的方面,注意上图中的图标大小。WPhone是允许用户自定义图标大小的,而且可以将图标在页面上任意拖动以完成自己想要的布局。

  每每想到诺基亚(确切地说是微软诺基亚)的未来,都会在思考,要是当时它能坚定地转向Android平台,现在世界上的手机格局又会是怎样一副情景!

转载于:https://blog.51cto.com/33997k7k/1924408

浅析WPhone、Android的Back与Home键相关推荐

  1. Android 关于长按back键退出应用程序的实现

    Android 关于长按back键退出应用程序的实现 最近在做一个Android上的应用,碰到一个问题就是如何实现长按back键退出应用程序.在网上查找了很多资料,发现几乎没有这样的实现,大部分在处理 ...

  2. android动态加home,Android 解决监听home键的几种方法

    Android 解决监听home键的几种方法 前言: 以下两种方法可以完美解决监听back键,home键,多任务键(最近任务键). 一.使用注册广播监听home键.多任务键 演示图 创建一个广播代码如 ...

  3. android获取spinner的值_在Android的Spinner中实现键值对的正确方法是什么

    这是在Android中为Spinner实现键值对的正确方法吗? package com.mypackage import android.app.Activity; import android.os ...

  4. android ctrl 左键鼠标左键直接打开xml文件夹,设置Android Studio通过Ctrl+左键查看源码...

    开始学习android的时候希望能点进系统提供的控件中查看源码,但是实际操作发现,看到的每个源文件方法都是抛出的Exception,所以想要设置成可以直接查看具体实现,记录下我自己的操作方法. 1.首 ...

  5. android如何屏蔽掉home键

    在2.3版本以下重写下面方法就能重写home键 public void onAttachedToWindow() {       this.getWindow().setType(WindowMana ...

  6. Android中监听Home键的4种方法总结

    本文主要介绍了Android中监听Home键的4种方法总结,主要讲解了onSaveInstanceState方法.onUserLeaveHint方法.ACTION_CLOSE_SYSTEM_DIALO ...

  7. Android 如何监听返回键,弹出一个退出对话框

    Android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用程序不小心点击退出键而直接退出.自己记录下这个简单的demo,备用. 注:如下代码当时是从网上copy过来的,现在忘了它 ...

  8. Android系统适配蓝牙遥控器键值Hi3798MV100

    最近有个项目机顶盒要适配蓝牙遥控器,我们原来的盒子是红外的遥控器. 从某宝买回来几款通用的遥控器,最简单的一款用cat /proc/bus/input/devices 命令查看name是BESCO K ...

  9. android设置返回按钮无效,Android onKeyDown监听返回键无效的解决办法

    Android onKeyDown监听返回键无效的解决办法 当我们的Activity继承了TabActivity,在该类中重写onKeyDown是监听不到返回键的, 具体解决方法如下: 重写dispa ...

最新文章

  1. docker 外部连接_使用外部网络连接Docker容器
  2. hibernate 集合类(Collections)映射
  3. 基于Android的百度地图开发
  4. 使用etcd的proto文件生成编译etcd client v3的c++客户端代码
  5. Matlab神经网络十讲(8): 归一化、权重读取、(非)线性网络设计
  6. 揭开知识库问答KB-QA的面纱3·信息抽取篇
  7. SQL Server数据库查询区分大小写、全半角——排序规则的应用(转载)
  8. linux qt 添加动态链接库_Qt 连接MySql数据库
  9. NotificationManagerService使用详解与原理分析(一)
  10. IIS 部署asp.net Provisional headers are shown 在VS2005返回值,部署不返回值
  11. 详解优酷视频质量评价体系
  12. Jmeter吞吐量控制器详解
  13. Jquery.ajax(……)
  14. 多线程之实现同步的信号量Semaphore
  15. 手把手教你提取WOW中的所有声音文件
  16. 台式计算机如何连接投影仪,台式机PC怎样与投影仪连接
  17. Session使用方法详解
  18. 安全测试(初测)报告
  19. 轻量级深度神经网络推理引擎——阿里巴巴的 MNN
  20. Keil 保护视力背景颜色设置和代码的颜色设置

热门文章

  1. SVB与加密的生存大“逃杀”
  2. Python之进程线程
  3. 用ASP创建Microsoft Word 文件
  4. 10款黑科技手机APP,每一款都是百里挑一!
  5. 如何破解联网收费软件,求高手指点
  6. 为什么六西格玛值得我们学习?-优思学院
  7. 逆向新手,经典扫雷游戏确定雷区地址的5个方法
  8. Vue 2.0 开发流程 (全)
  9. 安卓最新版本_tft云顶之弈下载最新版本下载-tft云顶之弈下载最新版本安卓 v10.20.3376669...
  10. DES 算法加密/解密源码