Resoureces.
参考这里。
在Java源文件中使用R对象。在xml文件中是用@引用。
Activities
参考这里。
以上所有函数都可以重写。
在Activity的onCreate()函数中,使用setContentView()函数来指定一个layout。
两个关键类:
import android.app.Activity;
import android.util.Log;
写调试日志:
Log.d(string0, string1);
Service
一个service可以对应一个class,从android.app包的Service类派生。
需要overide Service类的某些方法来实现具体的功能。
在manifest文件中需要添加必要的<service>标签。
使用startService()和stopService函数来启动和终止service。
Broadcast Receivers
events 和 intents。
Create a broadcast receiver,从BroadcastReceiver类派生,override onReceive方法。
register a broadcast receiver,在AndroidManifest.xml添加一个receiver标签。
<receiver android:name="MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
</action>
</intent-filter>
</receiver>
目前参考的API22,所有的Broadcast intents的列表位于
/home/yaoyu/Android/Sdk/platforms/android-22/data/broadcast_actions.txt
Content provider
一个content provider从 ContentProvider类派生而来。
访问一个content provider时使用URI。URI的构成如下:
content://<authority>/<data_type>/<id>
例如
content://contacts/people/5
需要Override的方法包括:onCreate(), query(), inset(), delete(), update(), 和getType()
URI和content provider的使用还是不太明白,有待以后详细学习。
Fragment
可以理解为子activity的概念,可以复用,一个activity可以使用多个fragment。
创建fragment时从Fragment类派生,并且在activity的layout中添加一个<fragment>元素。
fragment使得activity分成了不同部分,这些部分有自己的layout,event和life cycle。这种实现方案有利于程序的activity根据物理设备的变化发生相应的调整。
下图是fragment的life cycle,很多member function都是可以override的。这幅图同样出自这里。
Intents and Filters
intent可以理解为一个事件后者操作(action),一个filter可以理解为对不同action,category和data的响应。一个intent若要pass一个filter,那么这个intent的category和data type要以一定形式符合filter的描述。
filter不可以没有action。
创建一个Intent时,需要指定一个action,并且给出这个action的数据。intent-filter定义在activity中,需要在manifest文件中描述。每增加一个intent-filter,android系统似乎都会记录,当有合适的intent出现并且有多个filter符合条件时,android系统会询问用户使用那个activity执行。这些activity可能是一个app提供的,也可是不同的app提供的。