1.activity组件
activity是活动窗口,用户可以操作的界面,比如大家点击QQ图标之后见到的界面,用户可以点击好友弹出对话界面,点击空间可以查看好友动态等等,这些东西都包含在activity当中,是一组View的集合。
一个应用是由一个或者多个activity组成,由用户的设计来决定activity的个数,例如一个应用必须经过登陆之后才能使用,那么首先显示的activity是登录窗口,包括输入用户名和密码,登陆和注册按钮,输入用户名、密码之后,点击登陆,应用会和服务器进行数据交换,登陆成功,转换activity,显示主界面。
在系统运行过程中有多个activity,同时存在,但是当前可操作的只有一个activity,其它的都被隐藏,当被切换过来的时候,又成为了当前操作的activity,那么必须探讨一下activity的生存周期,能够很好的运用activity。
activity有onCreate、onPause、onStop、onResume、onDestroy、onStart和onRestart几种状态,如何获得这几个状态呢,我们创建一个activity时,必须要继承Activity这个类,那么可以重写父类的方法得到这几个方法,例如当activity被创建的时候调用onCreate方法,其实在创建类的时候,eclipse自动会写好这几行代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lifecycle);
}
注意在重写父类的时候要写上super.onCreate,其它的几个方法类似。
<span style="font-size: 24px;">
</span><p><span style="font-size: 24px;"> </span><span style="font-size:12px;">@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onRestart() {
super.onRestart();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
} </span></p>
activity的生命周期可以有一张图说明:
注意当内存紧张的时候系统会自动销毁onPause状态的activity释放空间。
学习了activity的生命周期,那么由activity到另一个activity中,消息是如何传递的呢,还是之前的例子,登陆之后获取到用户的信息,比如在数据库存储的主键值(在数据库中唯一的值,用来标识在数据库中的位置),利用它我们可以很方便的找到自己的信息(登录名、登陆状态以及好友信息等等),这个主键值可以用Intent传递到下一个即将显示的activity中。
Intent intent=new Intent(MainActivity.this, OtherActivity.class);
//Bundle类用作携带数据
Bundle bundle=new Bundle();
bundle.putInt("id", 24);
//附带上额外的数据
intent.putExtras(bundle);
startActivity(intent);
2.Services
一个主要的例子就是从列表中播放音乐的媒体播放器。播放器程序可能会有一个或几个活动,这些活动可以让用户选择希望播放的音乐然后显示播放。但是音乐播放过程本身不会使用一个活动,因为用户希望在切出播放器界面做别的事情时音乐也能一直放下去。为了保持播放继续,播放器的活动可以启动一个在后台运行的服务。然后即使启动这个服务的活动退出,音乐播放服务也能继续运行。
你可以连接(connect)或者绑定(bind)到一个正在运行的服务(如果这个服务还没运行的话就启动它)。当连接到服务后,你可以通过服务暴露出来的接口和这个服务进行通信,对音乐播放服务来说,这个接口可能允许用户暂停,后退,停止,重新播放等操作。
像活动和其他组件一样,服务运行在这个应用程序进程的主线程中。因此为了不阻塞其他的组件或者用户界面,服务经常为那些耗时长的任务单独开一个线程(比如音乐播放)。
3.Broadcast
应用程序可以有任意数量的广播接收器来对他所关心的广播进行监听并作出反应。所有的广播接收器都继承自BroadcastReceiver基类。
广播接收器不显示在用户界面上,但是可以启动一个活动来对接收到的信息进行响应,
或者可以使用 BroadcastReceiver 来警告用户。Notifications(通知)可以通过不同的方式引起用户的意,比如使背景灯闪烁,使设备振动,播放声音等等。通常是在状态栏上显示一个不会消失的图标,用户可以打开这个图标查看通知。
4.Context Providers
程间的通信。