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
}
转载于:https://blog.51cto.com/38275/723547