android 特殊事件处理

在android中,可能需要一些特定的事件来处理某些任务。下面我们将介绍android中比较特殊的2种事件处理。

响应系统设置事件

在开发android中, 我们可能需要让应用程序随着系统的设置而响应。例如判断屏幕的方向,导航的方向等。

Configuration类介绍

Configuration类用于描述手机设备上的配置信息,这些配置信息包括用户特定的配置项,也包括系统的动态配置项。

Configuration cfg = getResources().getConfiguration();

  • fontScale — 来源于system.prop中 sys.font.scale配置项
    输入设备类型配置:系统加入的任何输入device必须拥有输入属性:现在android中仅支持touchscreen(触摸),keyboard(键盘),navigation(滚动球)
  • orientation — 屏幕方位
  • keyboardHidden — 如果是划盖或开盖手机并且没有软键盘支持,这个设成true
  • hardKeyboardHidden — 如果是划盖或开盖手机,这个设成true
  • locale — 用户选择的location信息
  • theme — 皮肤,资源等等

重写onConfigurationChanged响应系统设置更改

如果应用程序需要监听系统设置的更改,则可以考虑重写Activityd的onConfigurationChanged(Configuation newConfig)方法,该方法是一个基于回调的事件处理方法:当系统设置发生更改是,改方法会被自动触发。

为了在程序中动态的更改系统设置,我们可以调用Activity的setRequestedQrientation(int)方法来修改屏幕的方向。

Handler消息传递机制

Android的消息传递机制是另一种形式的“事件处理”,这种机制主要是为了解决Android应用的多线程问题—android平台不允许Activity新启动的线程访问该Activity里的界面组件,这样会导致新启动的线程无法动态改变界面组件的属性值。但在实际Android开发中,尤其是涉及动画的游戏开发中,需要让新启动的线程周期性的改变界面组件的属性值,这就需要借助于Handler的消息传递机制来实现了。

Handler类简介

Handler类的主要作用:

  • 在新启动的线程中发送消息。
  • 在主线程中获取,处理消息。

为了让主线程能“适时”地处理新启动的线程锁发送的消息,显然只能通过回调的方式来实现—开发者只要重写Handler类中处理消息的方法,当新启动的线程发送消息时,Handler类中处理消息的方法被自动回调。
Handler类包含如下方法用于发送,处理消息。