android notes 2

Acitvity可以看作是一个User Interface Program, 提供使用者一个交互式的接口功能。如一个Email程序可能包含三个activity:1.邮件列表的activity 2.显示邮件内容的activity 3.写邮件或回复邮件的activity
所有的activity在系统里由activity堆栈所管理,当一个新的activity被执行后,它将会被放置在堆栈的最顶端,并变成“running activity”,先前的activity还在堆栈中,只是不在前景中。activity之间通过Intent交互。
android.app.Activity是所有Activity的超类,注意在Eclipse中超类默认为Java的java.lang.object;
Intent:用来从一个画面跳到另一个画面。描述一个程序想要做些什么事。它包括动作(action)和对数据产生的反应(data to act upon)。action主要内容有main,view,pick,edit等,数据则是用URI来表示.如:要查看一个人的联络数据时,需要建立一个intent,它包含了view动作和指向该人数据的URI描述句。
当Intent要求做某事时,IntentFilter被用来描述这个Activity能够做什么事。IntentFilter都会在AndroidManifest.xml清单里声明。
当一个程序对外部事件做些处理时,可以使用Broadcast Intent Receiver。如电话响时,有短信时。Broadcast Intent Receiver必须用NotificationManager来通知使用者他们感兴趣的事件发生了。Broadcast Intent Receiver可以在AndroidManifest.xml清单里声明,也可以写Context.registerReceiver()注册自己的Broadcast Intent Receiver。自己的程序并不会因为BroadcastReceiver被呼叫而被它执行起来,而是由系统依据需求执行相应的程序。程序可以利用Context.sendBroadcast()来发出他们自己的Intent broadcast给其他的程序。
画面的切换是由resolving intent来实现的。当你想产生新的画面时,现行的activity就是用startActivity(myIntent),系统根据所有已安装的程序所定义的Intent filter来看哪个程序最适合myIntent;当startActivity被呼叫时,esolving intent的处理过程是伴随而来的。
当一个Activity在屏幕的最上层时(堆栈的最顶端),它是running状态。如果失去焦点,但还能看到它的画面,则处于paused状态,它的数据还是存在的,只有内存不够时,paused状态的Activity才会被kill,如果一个Activity被完全遮住,则处于stop状态,当内存不足时,最先被释放。

服务是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在其他应用程序进程的上下文(context)里。其他组件可以绑定到一个服务上,通过远程过程调用(RPC)来调用这个方法,如音乐的后台播放。
1.Context.startService()启动服务,调用Context.stopService()结束。即使调用startService()的进程结束了service仍然存在,直到有进程调用stopService(),or stopSelf()。
2.Context.bindService()启动,服务和绑定的进程同生共死,调用Context.unbindService()结束,还可以通过ServiceConnection访问service。二者可以混合使用,此时只有stopService() and unbindService()才能结束服务。
如果有多个客户端绑定了服务,只要客户端中的一个对于用户是可见的,即认为该服务可见。系统会尝试保留那些启动了或绑定了服务的进程。
ContentProvider解决应用程序间数据分享。每一种ContentProvider都提供唯一的公共URI(由ContentURI封装),它将被客户端用于从ContentProvider请求、添加、更新、删除数据。如:android.provider.Contacts.Phones.CONTENT_URI
URI有两种,一种指出该类型数据的所有值,一种指出该类型数据的特定记录
Log类似于printf。有一些具体的方法输出log

posted @ 2010-05-11 19:35  莫忆往西  阅读(138)  评论(0编辑  收藏  举报