Android的四大组件:
主要四部分
– Activities-管理应用程序展示
• Activity Life Cycle
– Services-管理后台服务
• Services Life Cycle
– Broadcast receivers
• 管理事件的广播与接收
– Content Provider-管理数据共享
• Android系统中,数据是私有的,包含文件数据和数据库数据。
Content Provider类提供了标准方法接口,让其他的应用程序读取。
– 必须在AndroidManifest.xml中声明
沟通的桥梁: Intent
Intent的作用:
1、Intent是一种运行时绑定机制,他能在应用程序运行的过程中连接两个不同的组件,实现组件间的跳转。
2、Activity、 Service和BroadcastReceiver,都是通过Intent机制激活的,而不同类型的组件在传递Intent时有不同的方式。
3、Intent 是描述应用想要做什么 (官方表述:Intent是一次即将操作的抽象描述) , Intent 数据结构两个最重要的部分是:
– 动作:典型的动作类型有: MAIN(活动的门户)、VIEW、 PICK、 EDIT等。
– 动作对应的数据:以URI 的形式进行表示
• 例:要查看某个人的联系方式,需要创建一个动作类型为VIEW 的Intent,以及一个表示这个人的URI。
4、Android 使用了 Intent 这个特殊类,实现在屏幕与屏幕之间移动。 Intent 类用于描述一个应用将会做什么事。
• 目前有三种intent
– 启动一个新的activity,并可以携带数据;
– 通过一个intent来启动一个服务;
– 通过intent来广播一个事件;
Activity间数据传递:
public void onClick(View v) {
Intent intent1 = new Intent(ActivityMain. this,Activity1. class);
intent1.putExtra("activityMain", "数据来自 activityMain");
startActivityForResult(intent1, REQUEST_CODE);
String data=null;
Bundle extras = getIntent().getExtras();
if (extras != null) {
data = extras.getString("activityMain");
}
setTitle("现在是在Activity1里:"+data);
Intent的激活方式:
• Activity:通过调用 Context.startActivity()或者
Activity.startActivityForResult()方法。
• Service:调用 Context.startService()或者Context.bindService()方法将调用这方法的上下文与Service绑定。
• BroadcastReceiver:通过Context.sendBroadcast()、Context.sendOrderBroadcast()和Context.sendStick
• Broadcast()发送BroadcastIntent。 BroadcastIntent发送后,所有已注册的拥有与之匹配的IntentFilter的BroadcastIntent就会被激活。
事件监听器:
• 在一个Android 应用程序中,用户与应用程序之间的交互是通过事件处理来完成的,因此, 事件处理是必不可少的。
• 在进行用户界面里的事件中,进行监听的方法就是从与用户交互的特定视图对象截获这些事件。其中,视图类提供了相应的手段。
• 在各种用来组建布局的视图类里面,一些公共的回调方法对用户界面事件有用,这些方法在该对象的相关动作发生时被Android框架调用。 (比如,当一个视图(如一个按钮)被触摸时,该对象上的onTouchEvent()方法会被调用等等。 )
OnClickListener:
• OnClickListener接口处理的是点击事件。
• 在触屏模式下,是在某个View 上按下并抬起的组合动作
• 在键盘模式下,是某个 View 获得焦点后点击确定键或者按下轨迹球事件。
• 该接口对应回调方法
– Public void onClick( View V);
– 说明:参数 V 便为事件发生的事件源。
• OnLongClickListener 接口和 OnClickListener 接口基本原理是相同的,只是该接口是长按事件的捕捉接口,即当长时间按下某个 View 时触发的事件。
• 该接口对应方法为:
onLongClickListener:
Public boolean onLongClick( View V);
说明:
–参数 V :参数 V 为事件源控件,当长时间按下此控件时才会触发该方法。
–返回值 : 该方法的返回值为一个 boolean 类型的变量,当返回为 true 时,表示
已经完整地处理了这个事件,并不希望其他的回调方法再次进行处理;当返回为false 时,表示并没有完成处理该事件,更希望其他方法继续对其进行处理。
OnFocusChangeListener
接口用来处理控件焦点发生改变的事件。如果注册了该接口每当某个控件失去焦点或者获得焦点时都会触发该接口中的回调方法。
• 该接口对应的签名方法为:
Public void onFocusChangeListener( View V, Boolean hasFocus)
– 说明:
– 参数 V:参数 V便为触发该事件的事件源
– 参数 hasFocus:参数hasFocus 表示v的新状态,即 v 是否获得焦点。
OnKeyListener:
• OnKeyListener 是对手机键盘进行监听的接口,通过对某个View 注册该简体ing,当 View 获得焦点并有键盘事件时,便会触发该接口中的回调方法。该接口中的回调方法如下:
public Boolean onkey( View v, int keyCode, KeyEvent event);
– 说明:
– 参数 V:参数 v 为时间按的事件源控件。
– 参数 keyCode:参数 keyCode 为手机键盘的键码。
– 参数 event:参数 event 便为键盘事件封装类的对象,其中包含了事件的详细信息。
OnTouchListener:
OnTouchListener 接口是用来处理手机屏幕事件的监听接口,当为 View 的范围内触摸按下、抬起或滑下等动作时都会触发该事件。该接口中的监听方法签名如下:
Public boolean onTouch( View V ,MotionEvent event);
说明:
–参数 v::参数 v 为事件源对象
–参数 event:参数 event 为事件封装类的对象,其中封装了触发事件的
详细信息,包括事件的类型、触发时间等信息。