`

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

阅读更多
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 stub
						EditText 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();
					}
				}
        		}
        		);
				     	
        
    }
}


分享到:
评论

相关推荐

    Android开发的四大组件

    文档主要是讲Android开发的四大组件详解,包含 Activity详解 ,Service详解,Broadcast Receiver详解,Content Provider详解 外加一个重要组件 intent的详解。 文章内容来自网络,本文是一个总结性文章。

    Android 的开发组件

    Android的开发组件 为Android的爱好者提供 清晰明了的Android机制框架 介绍四大组件

    Android组件设计思想

    Android应用开发的哲学是把一切...这一节讲Android组件化设计的背景、理念、原则,以及Android在OS级别上提供的组件化支持,其中还会包含一个实验来验证这种组件化设计思想,可以对Android系统有一个高层次的抽象理解。

    Android自定义组件开发

    Android自定义组件开发详解

    android应用开发范例精解

    第2篇为应用开发篇,通过实例介绍了Android UI布局、Android人机界面、手机硬件设备的使用、Android本地存储系统、Android中的数据库、多线程设计、Android传感器、Android游戏开发基础、Android与Internet,以及...

    android开发揭秘PDF

    第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 ...

    Android自定义组件开发详解

    Android自定义组件开发详解,进阶书籍。本书教你如何更好使用自定义view

    Android游戏开发各种基本组件和知识源码

    AndroidGames Android游戏开发各种基本组件和知识源码

    《Android网络开发技术实战详解》 PDF

    《Android网络开发技术实战详解》分为18章,分别介绍了Android开发之前所要做的工作、必须具备的网页开发技术、HTML 5基础、在Android系统中开发网页的必备技术、HTTP通信处理、URL地址处理、WebKit、Wi-Fi、蓝牙、...

    《Android操作系统与应用开发》PDF

    刘乃安主编的《Android操作系统与应用开发》主要介绍Android操作系统及其应用开发,共分为7章,分别为Android基础、Android应用层开发语言、Android应用开发环境、Android基本组件、Android数据存储、Android简单...

    Android应用开发详解

    第6章 Android组件之间的信使Intent Android 组件之间的信使Intent,讲述了Intent对象及其属性、Intent的实现策略和Intent的常见应用 第7章 Android Service组件 Android Service组件,讲述了Android中的后台服务...

    Android 系统开发技术课程设计 实验任务书及实验报告

    实验1构建Android开发环境和Android应用程序 实验2基本视图组件的使用(一) 实验3:基本视图组件的使用(二) 实验4:布局管理器 实验5:Intent、Activity应用 实验6:基本视图组件的使用(三) 实验7 音乐播放器 ...

    Android自定义组件开发详解.docx

    Android自定义组件开发详解,让你彻底理解自定义组件(自定义View、ViewGroup等,彻底了解canvas和paint的基本和高级使用方法)

    《Android自定义组件开发详解》PDF

    《Android自定义组件开发详解》

    Android开发PPT(PDF)

    10大话企业级Android开发_组件(上).pdf 11_Android的连接部分.pdf 12_Android的传感器系统.pdf 01_Android系统概述.pdf 02_Android系统的开发综述.pdf 03_Android的Linux内核与驱动程序.pdf 04_Android的底层...

    Android应用开发案例教程 (毋建军、徐振东、林瀚 编著) pdf

    全书论述了Android开发概述,Android应用程序组成,Android UI(用户界面)基础,Android UI系统控件基础,Android UI系统控件进阶,Android UI菜单、对话框,Android组件广播消息与服务,Android数据存储与访问,...

    Android 桌面组件开发

    如何在Android 自带的Home应用程序Launcher上进行桌面组件的开发,其中包括了快捷方式、实时文件夹以及桌面部件这三种组件的开发。通过学习将了解到桌面组件的详细开发流程,并且能从中掌握一些实用的桌面组件的开发...

    Android 自定义TimePicker组件

    Android组件TimePicker组件的深入解析,自定义TimePicker组件

    Android应用开发与系统改造实战.王保卫等.源代码

    首先,在Android应用程序层面,详细讲解了应用程序开发的各项技术,着重讲解了应用程序的开发基础、应用程序的结构、4大组件工作原理与功能,以及它们之间通信的基础Intent类。此外,给出了一些实例让读者能够更深刻...

    老罗android开发视频教程全集百度网盘下载

    Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序—— 移动电话工作所需的全部软件,而且不存在任何...【第一版第十五章】老罗Android开发视频--百度地图实战开发(10集)

Global site tag (gtag.js) - Google Analytics