1、Intent可以执行以下任务:

       广播消息

       启动Service

       启动Activity

       显示网页或一组联系人

       拨出或接听电话

       Intent并不总是由应用程序发起的,系统也会使用他们来向应用程序通知特定事件。

       Intent可以使显式的,也可以是隐式的。其将操作和操作处理程序松散的耦合在一起。

2、Android中的Service分本地Service和远程Service。

3、Android只支持在res下创建预定义文件夹,而且预定义文件夹下不能嵌套其它文件夹。

4、assets文件夹和raw文件夹有些类似,两个文件夹下都包含原始文件,但raw中的文件被当做资源(通过资源ID访问),而assets中的文件不是(在其下可以随意建立文件夹和文件)。

5、在程序安装到设备上时,所有XML文件都将被编译为二进制文件,从而不必担心会占用设备上的资源。

6、Android查询必须返回一个名为_ID的列,以支持检索单条记录。

7、当Android看到一个需要解析的URL时,它获取该URI的授权部分并查找为该授权配置的ContentProvider类。

      public static final Uri CONTENT_URI =Uri.parse("content://" + AUTHORITY + "/notes");

      <provider android:name="NotePadProvider" android:authorities="com.google.provider.NotePad"/>

8、Activity的生命周期方法如果被调用了,则一定要确保调用超类的相应方法。

9、在onPause()方法中可以将关键数据持久保存在应用程序的数据存储中。此方法是在系统结束应用程序前调用的最后一个安全的方法,无法保证onStop或者onDestroy方法会被调用。

10、关于在真实设备上调试程序,需要知道两点。第一点是,应用程序必须在Androidmainifest.xml文件中设置为debuggable,添加到<application>标记中。当为模拟器创建调试版本或者从Eclipse直接部署到设备时,ADT将此特性设为true。当导出为生产版本时设置为false。如果手动在Androidmainifest.xml文件中设置debuggable为true,则保留此设置。要知道的第二点是设备必须处于USB调试模式(Settings->Application->Development->Enable USB Debugging)。

11、启动ADT模拟器时snapshot为快照功能,可以加快启动和关闭速度。

12、Android 2.3引入了一种名为StrictMode的新功能,他可以报告与线程和虚拟机相关的策略违规。

13、目前有两种类型的策略可用于StrictMode,第一种策略与线程相关,最常用于针对主线程而运行,从主线程执行磁盘读写不是一种好方法,从主线程执行网络访问也不是好方法。Google在磁盘访问和网络访问代码中添加了StrictMode挂钩。可以选择提醒的方式为写入LogCat、显示对话框、在屏幕上闪烁显示、写入到DropBox日志文件或者崩溃系统程序。

        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()

       .detectDiskReads()

       .detectDiskWrites()

       .detectNetwork()

       .penaltyLog()

       .build());

14、StrictMode会自动为主线程上发生的所有操作启动StrictMode,可以在主线程的onCreate方法中启动StrictMode,也可以在Application的onCreate方法中启动StrictMode。

15、如果SQlite在关闭之前被终结,或者任何Closeable对象在关闭之前被终结,可使用VmPolicy检查内存泄露,注意VmPolicy无法通过对话框进行提醒。

        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()

        .detectLeakedSqlLiteObjects()

        .penaltyLog()

        .penaltyDeath()

        .build());

16、可采用两种方式关闭生产应用的StrictMode,最简单的是删除调用,但这样会使得很难继续对他进行开发。可以始终定义一个应用程序级的布尔值,在调用StrictMode模式之前测试它,还可以利用android:debuggable特性。

        // Return if this application is not in debug mode

        ApplicationInfo appInfo = context.getApplicationInfo();

        int appFlags = appInfo.flags;

        if ((appFlags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {

        // Do StrictMode setup here

        }