`
crazier9527
  • 浏览: 1011083 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android API Demo研究(2)

阅读更多

1. Forwarding

这个实现很简单,就是启动新的Activity或者Service后,增加一个finish()语句就可以了,这个语句会主动将当前 activity从历史stack中清除,这样back操作就不会打开当前activity。

做这个实验的时候,发现开发Android程序需要注意的一点小问题:增加新的activity时,不能只增加一个class,一定要记得要在manifest文件中增加该activity的描述。(这个简单的功能,未来google应该给增加吧)

“android:name中的点”意义:首先manifest会有一个默认指定的package属性,比如指定为"com.android.sample",如果我们增加的activity的实现也在这个package下,则android:name为实现的类名,这个类名前加不加点都没有关系,都会自动找到该实现,比如实现为forwardtarget,则android:name写成forwardtarget或者.forwardtarget都可以。唯一有区别的是,如果activity的实现是在默认包的子包里面,则前面这个点就尤为重要,比如activity的实现是com.android.sample.app.forwardtarget,则android:name必须写成.app.forwardtarget或者com.android.sample.app.forwardtarget。如果只写app.forwardtarget,通常编辑器就会提示该类找不到,但不巧的是,你恰好有一个类是app.forwardtarget,那你只有等着运行时报错吧。 
所以建议养成习惯只要是默认package下面的类,无论是否是在子包里面,前面都要加上一个点,现在当前实现是在默认package下。

2.Persistent

这里的持久化其实就是本地配置文件的读写,实现方法是通过Activity.getPreferences(int)获取SharedPreferences对象,然后操作配置文件的读写,值得注意的是以下几点:

1)Activity.getPreferences(int mode)等价于Content.getSharedPreferences(String filename,int mode),这里面的filename就是当前class的名称,例如在PersistentTest类中调用getPreferences(0),等价于调用getPreferences("PersistentTest", 0)。如不想用class name做文件名,可以直接调用getSharedPreferences方法,自己指定配置文件的名称。

2)mode值的定义:

MODE_PRIVATE = 0,表示当前配置文件为私有文件,只有当前的应用可以访问。

MODE_WORLD_READABLE = 1,表示当前配置文件可以被其他应用读取。

MODE_WORLD_WRITEABLE = 2,表示当前配置文件可以被其他应用写入。

如果配置文件又想被人读又想被写人,怎么办呢,呵呵,当然是MODE_WORLD_READABLE&MODE_WORLD_WRITEABLE,真的怀疑设计android的人以前是做C/C++的。

3)SharedPreferences是个很有意思的实现,读取数据的时候,直接用get方法就可以了,可是写数据的时候,没用给set方法,呵呵,第一次用这个类一定会以为只能读不能写。如果要写数据的话,需要用editor()方法(为什么不是getEditor()呢?看来设计的人一定是做C/C++的)获取SharedPreferences.Editor类,然后用这个类的put方法写文件。为什么要这样做呢?好久没有看设计模式了,不知道他采用是哪种高级模式,等以后有时间,看看它的实现再做研究吧。

4)在这个实现中,读文件是放在onResume()中,写文件是在onPause()中,为什么要这么做呢,看字面意思,好像只有恢复和暂停的时候才会被执行,那程序第一次创建的时候会读文件吗?来让我们看看Activity的生命周期,就会发现这么做的巧妙之处:

看到了吧,在Activity运行的前后,无论状态怎么转移,onResume()和onPause()一定会被执行,与其说实现的巧妙,还不如赞一下这个生命周期的设计的巧妙,这个巧妙不是说说而已,有时间的话,看看MFC中一个windows或者dialog的生命周期,你就知道这个巧妙的含义了,我们可以省多少的事情啊!所以值得记住的是,在android中想在运行前后必须要执行的语句,就应该放在onResume()和onPause()中。

4)最后说一个对android小不爽的地方:drawable,什么鬼东西啊!在res/drawable放一个文件,访问的时候是drawable/name,如果在values里面建立一个drawable的变量,访问的时候也是drawable/name,例如在drawable目录下放入一个red.xml文件,访问的时候是@drawable/red,如果建立一个drawable的变量red,访问也是@drawable/red,这完全就是两个东西啊,虽然最新的编辑器会提示重名,但查找的时候真的很不方便啊,尤其是drawable变量,可以放在一个abc.xml中,以后资源文件多了,管理起来想想都头麻,就不能把其中一个改改名字吗?把drawable变量叫成drawable_value不行吗?

 

转自:http://zxshean.spaces.live.com/blog/

  • 大小: 63.5 KB
分享到:
评论

相关推荐

    Android API Demo 源码

    **Android API Demo 源码详解** Android API Demo 是一套由Google官方提供的示例代码库,旨在帮助开发者理解和学习Android平台的各种API功能。这个源码集合涵盖了从基础UI组件到高级服务和网络通信的多种技术,是...

    androidapi的Demo

    《Android API Demos详解》 Android API Demos是一款专为开发者设计的学习工具,它包含了Android 4.2系统中的各种API示例代码,是深入理解Android SDK和开发实践的重要资源。这个项目旨在帮助开发者们更好地理解和...

    Android Api demo 4.2.2

    android4.2.2 的api demo

    Android_API_Demo_Clipping

    2. **Android中的Clipping API**: - `Canvas.clipRect()`:这个方法用于设置当前Canvas的剪切区域,只允许在指定矩形内进行绘制。可以接受多个参数,如矩形的左上角和右下角坐标,或者直接使用Rect对象。 - `View...

    api demo,包含android所有api的演示代码,这是4.2

    通过深入研究这些代码,开发者可以更好地理解Android系统的工作原理,提升开发效率,并且能快速适应新版本的API变化。 总之,Android API Demo是Android开发者不可或缺的学习资源,无论你是初学者还是经验丰富的...

    android_api_demo

    【Android_API_Demo】是一个专为Android初学者设计的实践项目,它包含了Android开发中常用API的各种示例代码,帮助开发者了解并掌握Android组件的使用方法。在这个项目中,你可以找到关于活动(Activity)、意图...

    Android camera API Demo

    `Android camera API Demo`是一个基础示例,旨在帮助开发者了解如何在应用程序中显示并处理来自摄像头的实时影像。这个Demo通常会涵盖基本的相机操作,如打开摄像头、预览图像、拍照以及关闭摄像头。下面将详细阐述...

    Android API Demo

    **Android API Demo** Android API Demo 是一个官方提供的示例代码集合,它包含了各种Android平台API的使用演示。这个项目旨在帮助开发者理解和学习如何在实际应用中有效地利用Android SDK中的各种功能和API。通过...

    android apidemo

    通过深入研究Android API Demo项目,开发者不仅可以掌握基本的API用法,还能了解到更高级的特性和最佳实践。它是一个不断更新的资源库,随着Android版本的升级,新的API和功能示例也会被添加进来,使得开发者能够...

    Android API Demo 4.0

    android4.0API 的官方 Demo,非常适合用来熟悉android framework 层的各种 API,了解用 Android 来做应用可以实现那些功能,可以结合http://developer.android.com/guide/index.html一起看,比较适合新手入门。

    百度地图android 开发API 含demo

    2. **BaiduMapApi_Lib_Android_1.3.4.zip**:这个文件包含了百度地图Android API的库文件,是开发者在项目中引用百度地图服务的核心依赖。将此库导入Android Studio项目后,开发者可以调用API接口进行地图功能的编程...

    Android google地图api Demo

    在这个名为"Android google地图api Demo"的项目中,我们将深入探讨如何使用Google Maps API在Android应用上实现一个简单的地图展示示例。 首先,我们需要在Google Cloud Console上注册一个新的项目,并启用Google ...

    openfire+asmack中文api+androidDemo

    【标题】"openfire+asmack中文api+androidDemo"涉及的是即时通讯(Instant Messaging, IM)技术在Android平台上的实现。Openfire是一款开源的XMPP服务器,而ASMACK是针对Android平台的XMPP库,它允许开发者在Android...

    安卓串口demo(android-serialport-api-android-serialport-api

    标题中的"安卓串口demo(android-serialport-api-android-serialport-api)"指的是一个用于Android系统的串口通信示例程序,它基于开源项目“android-serialport-api”。 这个开源项目是为了解决Android设备上串口...

    android-serialport-api 串口demo.zip

    这是很据android-serialport-api 自己简化的一个demo ,可以使用。原来android-serial-api的程序很多人反映都不能使用,所以自己写了这个,只有一个activity,可以做为你的学习参考。

    Android SipDemo( 网络电话的例子源码,android 2.3以上才能用)

    2. **Android Sip API**:Android提供了原生的SIP API,允许开发者创建支持SIP的移动应用。该API包含`android.sip`包,包括`SipManager`、`SipProfile`、`SipAudioCall`等类,它们提供了构建和管理SIP会话所需的功能...

    android studio调用API登录注册DEMO

    在Android开发中,Android Studio是Google提供的一款强大的集成开发环境(IDE),专为构建Android应用而设计。...学习这个DEMO,开发者可以掌握如何在Android应用中安全有效地调用API,实现用户认证功能。

    Android camera api2 demo

    在Android平台上,Camera API 2是自Android 5.0(API级别21)引入的一个重大更新,旨在提供更高效、灵活和强大的...通过研究这个Demo,开发者可以学习如何充分利用Camera API 2,创建具有专业摄影功能的Android应用。

Global site tag (gtag.js) - Google Analytics