短时间内认识Android开源系统

移动开发 Android
下面文章着重介绍Android开源系统提供了三种菜单类型,他们分别为options menu,context menu,sub menu。

Android开源系统是GOOGLE于Google于2007年11月5日宣布,GOOGLE内部会议据说号称是***为移动终端打造的真正开放和完整的Android开源系统,不知道这个信息是不是真的很正确。

options menu就是通过按home键来显示,context menu需要在view上按上2s后显示。这两种menu都有可以加入子菜单,子菜单不能种不能嵌套子菜单。options menu最多只能在屏幕最下面显示6个菜单选项,称为icon menu,icon menu不能有checkable选项。多于6的菜单项会以more icon menu来调出。

称为expanded menu。options menu通过activity的onCreateOptionsMenu来生成,这个函数只会在menu***次生成时调用。任何想改变options menu的想法只能在onPrepareOptionsMenu来实现,这个函数会在menu显示前调用。onOptionsItemSelected 用来处理选中的菜单项。

context menu是跟某个具体的view绑定在一起,在activity种用registerForContextMenu来为某个view注册context menu。context menu在显示前都会调用onCreateContextMenu来生成menu。onContextItemSelected用来处理选中的菜单项。

android还提供了对菜单项进行分组的功能,可以把相似功能的菜单项分成同一个组,这样就可以通过调用setGroupCheckable,setGroupEnabled,setGroupVisible来设置菜单属性,而无须单独设置。

Notepad中使用了options menu和context menu两种菜单。首先来看生成options menu的onCreateOptionsMenu函数。这到底有何用处呢?其实这是一种动态菜单技术(也有点像插件机制),若某一个activity,其类型是”android.intent.category.ALTERNATIVE”。

数据是”vnd.android.cursor.dir/vnd.google.note”的话,系统就会为这个activity增加一个菜单项。在androidmanfest.xml中查看后发现,没有一个activity符合条件,所以这段代码并没有动态添加出任何一个菜单项。

对于上下文菜单项选中的事件处理,是通过重载onContextItemSelected实现的

  1. switch (item.getItemId()) {  
  2.          case MENU_ITEM_DELETE: {  
  3.              // Delete the note that the context menu is for  
  4.              Uri noteUri = ContentUris.withAppendedId(getIntent().getData(), info.id);  
  5.              getContentResolver().delete(noteUri, null, null);  
  6.              return true;  
  7.          }  
  8.      }  
  9.      return false;  

对于日志的删除,首先调用ContentUris.withAppendedId(getIntent().getData(), info.id);来拼接出待删除日志的URI.然后getContentResolver().delete(noteUri, null, null);调用下层的Content Provider去删除此日志。

这里先不讨论例子了,来看看官方文档对Activity生命周期的介绍。

1Android开源系统用Activity Stack来管理多个Activity,所以呢,同一时刻只会有最顶上的那个Activity是处于active或者running状态。其它的Activity都被压在下面了。

2.如果非活动的Activity仍是可见的(即如果上面压着的是一个非全屏的Activity或透明的Activity),它是处于paused状态的。在系统内存不足的情况下,paused状态的Activity是有可被系统杀掉的。只是不明白,如果它被干掉了,界面上的显示又会变成什么模样?看来下回有必要研究一下这种情况了。

3.几个事件的配对可以比较清楚地理解它们的关系。Create与Destroy配成一对,叫entrie lifetime,在创建时分配资源,则在销毁时释放资源;往上一点还有Start与Stop一对,叫visible lifetime,表达的是可见与非可见这么一个过程;最顶上的就是Resume和Pause这一对了,叫foreground lifetime,表达的了是否处于激活状态的过程。

4.因此,我们实现的Activity派生类,要重载两个重要的方法:onCreate()进行初始化操作,onPause()保存当前操作的结果。

【编辑推荐】

  1. Android应用程序组建原理深入剖析 
  2. Android SMS短信服务相关概念简述 
  3. PythonAndroid数据库相关代码解读 
  4. PythonAndroid安装卸载程序具体操作方法解析 
  5. Android应用程序的四个关键点 
责任编辑:chenqingxiang 来源: 人民邮电出版社
相关推荐

2010-03-03 17:19:48

Android

2010-02-24 13:56:27

Python编程语言

2010-01-19 18:18:21

C++语言

2015-01-08 14:04:49

电信CDMA

2010-03-17 13:07:47

交换机故障

2010-03-19 10:46:34

交换技术

2010-03-16 10:32:23

配置交换机

2009-11-25 15:31:40

VS2003 SDK

2013-01-13 10:01:18

2022-03-17 14:36:20

后门网络安全

2009-11-25 13:22:49

VS2003代码

2010-03-02 13:38:30

Android命令

2020-04-03 08:40:38

微软谷歌无代码

2017-12-02 07:33:30

苹果Face ID多用户

2017-08-02 08:52:19

2010-03-10 14:04:53

交换机故障

2010-01-20 10:40:44

C++Test

2010-04-29 14:15:15

Oracle Audi

2015-09-16 09:19:57

2013-10-24 10:00:20

Unix服务器
点赞
收藏

51CTO技术栈公众号