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();
}
}
}
);


}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值