Android系统开发01—Android基本组件

1. 应用程序生命周期
应用程序进程从创建到结束的全过程便是应用程序的生命周期。与其他系统不同,Android应用程序的生命周期是不受进程自身控制的,而是由Android系统决定的。
Android系统将所有的进程分为5类进行管理:
1. 前台进程
2. 可见进程:还在屏幕中,但是用户并没有直接与之进行交互。
3. 服务进程
4. 后台进程
5. 空进程
从1到5,重要顺序递减。
注意:应用程序在运行时,其状态的切换可能是通过自身实现的,可也能是系统将其改变的。
2. Activity
Activity是Android中最常用的组件,是应用程序的表示层,Activity一般通过View来实现应用程序的用户界面,相当于一个屏幕,用户与程序的交互式通过该类实现的。
Activity的生命周期主要包含三个状态:运行态,暂停态,停止态。
Activity的显示内容跟是由View对象提供的,View对象继承自View类,其中每个View对象管理屏幕中的一个矩形区域。Android自带了许多View对象,而除了使用Android自带的View外,还可以自定义View。
例子:
MyView.java:package qijia.si;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.view.View;public class MyView extends View {Paint paint;public MyView(Context context){super(context);paint = new Paint();paint.setColor(Color.WHITE);paint.setTextSize(20);paint.setAntiAlias(true);}protected void onDraw(Canvas canvas){super.onDraw(canvas);canvas.drawColor(Color.GRAY);canvas.drawRect(10,10,110,110, paint);canvas.drawText("fuck you", 60, 170, paint);}}MyAndroidProject.java:package qijia.si;import android.app.Activity;import android.os.Bundle;public class MyAndroidProject extends Activity {    /** Called when the activity is first created. */MyView myView;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        myView = new MyView(this);        this.setContentView(myView);    }}
3. Service
Service是一个具有较长的生命周期但是并没有用户界面的程序。
Service一般由Activity启动,但不依赖于Activity,Service有两种启动方式:
1. startService
当Activity调用startService方法启动Service时,会依次调用onCreate和onStart方法来启动Service。当结束时,调用onDestroy方法结束Service。
2. bindService

BoardReceiver
BoardReceiver为用户接收广播通知的组件,当系统或某个应用程序发送广播时,可以使用BoardReceiver组件来接收广播信息并作出相应的处理。
使用过程:
1. 将需要广播的消息封装到Intent中。
2. Context.sendBroadcast(),sendOrderedBroadcast(),sendStickyBroadcast()中的一种将Intent发送
3. 通过IntentFilter对象过滤所发送的实体Intent
4. 重写onReceive方法的BoardReceiver。

4. ContentProvider
ContentProvider是用来实现应用程序之间数据共享的类。
5. Intent和IntentFilter
1) Intent类简介
Intent是一种运行时绑定机制,在应用程序运行时连接两个不同的组件。一般的应用是通过Intent向Android系统发出某种请求,然后Android系统会根据请求查询各个组件声明的IntentFilter,找到需要的组件并运行它。
前面所说的Activity,Service及BroadcastReceiver组件之间的通信全部使用的是Intent但是每个机制不同。
Activity组件:当需要激活一个Activity组件时,需要调用Context.startActivity或Context.startActivityForResult方法来传递Intent,此时的Intent参数成为Activity Action Intent
Service组件:一般通过Context.startService和Context.bindService
BroadcastReceiver组件:上面已经介绍

Intent是由组件名称,Action,Data,Category,Extra和Flag组成:

1. 组件名称:组件名称实际上就是一个ComponentName对象,用于标识唯一的应用程序组件。
2. Action:一个描述Intent所触发动作名称的字符串。如
ACTION_CALL,ACTION_EDIT,ACTION_VIEW,ACTION_MAIN等
3. Data:主要对Intent消息中数据的封装,主要描述Intent的动作所操作到的数据的URI及类型
4. Category:是对目标组件类型的描述
5. Extra:封装了一些额外的附加信息。
2) IntentFilter
IntentFilter实际上相当于Intent的过滤器。IntentFilter过滤Intent时,主要通过Action,Data及Category三方面进行监测:
1. 检查Action:一个Intent只能设置一种Action,但是一个IntentFilter却可以设置多个Action过滤。当IntentFilter设置了多个Action时,只需一个满足就可完成Action验证。
2. 检查Data:主要检查URI及数据类型
3. 检查Category:当Intent中的Category与IntentFilter中的一个Category完全匹配时,便会通过Category检查。
Intent案例:
判断输入的电话号码是否符合规范当符合规范时,调用系统自带的拨号程序进行拨号。

package qijia.si;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.telephony.PhoneNumberUtils;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MyAndroidProject extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);           setContentView(R.layout.main);        Button bCall = (Button)this.findViewById(R.id.Button01);        bCall.setOnClickListener(        new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubEditText eTel = (EditText) findViewById(R.id.myEditText);        String strTel = eTel.getText().toString();        if(PhoneNumberUtils.isGlobalPhoneNumber(strTel)){        Intent i = new Intent(Intent.ACTION_DIAL,Uri.parse("tel://"+strTel));        MyAndroidProject.this.startActivity(i);                        }else{        Toast.makeText(        MyAndroidProject.this,        "号码格式不正确",        5000                ).show();}}        }        );                 }}


更多相关文章

  1. 浅析android通过jni控制service服务程序的简易流程
  2. 关于Android(安卓)Studio3.2新建项目Android(安卓)resource link
  3. Android(安卓)- Manifest 文件 详解
  4. Android四大基本组件介绍与生命周期
  5. Android之应用程序基础
  6. Android四大组件的理解
  7. Android官方入门文档[1]创建一个Android项目
  8. 第三章 Android程序设计基础
  9. android用户界面-组件Widget-地图视图MapView

随机推荐

  1. Android(安卓)发送短信功能
  2. Android(安卓)源码编译so,jar
  3. android VoiceRecognition 语音识别并打
  4. android根据应用方向自动旋转的自定义vie
  5. Android(安卓)多线程下载
  6. android包重复问题
  7. Unity3d 调用Android震动
  8. Android(安卓)文件操作工具类
  9. Android(安卓)TimeUtile日期处理工具类(
  10. android Error inflating class com.goog