【BMI指数计算器V4.0】项目实战

【BMI指数计算器V4.0】项目在V3.0基础上新增了Service和BroadcastReceiver,将数据库操作放入Service进行后台处理。介绍Android四大组件的职责:Activity处理界面,Service处理后台任务,BroadcastReceiver接收广播和数据传递,ContentProvider用于数据共享。
摘要由CSDN通过智能技术生成

前言     

      【BMI指数计算器V4.0】与【BMI指数计算器V3.0】实现的效果是一样的,不同的是在【BMI指数计算器V3.0】的基础上加入了Service层(服务),BroadcastReceiver(广播接收者),使得项目的架构较V3.0多了一层。之所以使用Service(服务),是为了让数据库这样的与界面无关的业务逻辑放到Service(服务)中去处理,这也正是Service(服务)所擅长的。我们知道Android 有四大组件,分别是Activity(活动),Service(服务),BroadcastReceiver(广播接收者)ContentProvider(内容提供者)。而这四大组件各自所擅长的都不一样。

比如 :

 (1)Activity擅长处理界面显示与界面交互工作;

 (2)Service擅长处理与界面无关,专门在后台进程中执行的操作;

 (3)BroadcastReceiver擅长接收系统广播以及Activity与Service之间的数据传递工作;

 (4)ContentProvider擅长让不同应用程序间共享数据。

更新列表

1.项目架构增加了Service层和BroadcastReceiver

2.数据模型Bmi类实现了一个标识接口 Serializable

3.其他的都与V3.0保持一致


项目架构图


技术预报

  1.Sevice(服务组件技术)
   2.BroadcastReceiver(广播接收者组件技术)
   3.数据对象或集合在不同组件间的传递(需要让数据模型类实现标识接口 Serializable) 
 
   

界面开发

        V4.0主要是在V3.0的基础上将项目的架构换成用Service去操作SQLite数据库,得到数据后发广播,让BroadcastReceiver去接收,在界面方面并没有改动,如果对界面开发不清楚的朋友请参考V3.0。

功能开发

 step1:数据模型层:com.kedi.bmi.model/Bmi.java

package com.kedi.bmi.model;

import java.io.Serializable;

/**
 * 指数数据实体类(数据模型) 实现一个标识接口Serializable(代表Bmi可以持久化,可放入Intent在各组件之间传递)
 * 
 * @author 科弟
 * 
 */
public class Bmi <span style="color:#ff0000;">implements Serializable</span> {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	// 唯一标识
	private int id;
	// 身高
	private double heigth;
	// 体重
	private double weigth;
	// 体重指数
	private double bmiNum;
	// 体重状态
	private String bmiState;
	// 体重状态图片名
	private String stateIconId;
	// 计算时间
	private long calaTime;

	/**
	 * 构造方法
	 */
	public Bmi() {
	}

	/**
	 * 构造方法
	 * 
	 * @param id
	 * @param heigth
	 * @param weigth
	 * @param bmiNum
	 * @param bmiState
	 * @param stateIconId
	 * @param calaTime
	 */
	public Bmi(int id, double heigth, double weigth, double bmiNum,
			String bmiState, String stateIconId, long calaTime) {
		super();
		this.id = id;
		this.heigth = heigth;
		this.weigth = weigth;
		this.bmiNum = bmiNum;
		this.bmiState = bmiState;
		this.stateIconId = stateIconId;
		this.calaTime = calaTime;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public double getHeigth() {
		return heigth;
	}

	public void setHeigth(double heigth) {
		this.heigth = heigth;
	}

	public double getWeigth() {
		return weigth;
	}

	public void setWeigth(double weigth) {
		this.weigth = weigth;
	}

	public double getBmiNum() {
		return bmiNum;
	}

	public void setBmiNum(double bmiNum) {
		this.bmiNum = bmiNum;
	}

	public String getBmiState() {
		return bmiState;
	}

	public void setBmiState(String bmiState) {
		this.bmiState = bmiState;
	}

	public String getStateIconId() {
		return stateIconId;
	}

	public void setStateIconId(String stateIconId) {
		this.stateIconId = stateIconId;
	}

	public long getCalaTime() {
		return calaTime;
	}

	public void setCalaTime(long calaTime) {
		this.calaTime = calaTime;
	}

	@Override
	public String toString() {
		return "Bmi [id=" + id + ", heigth=" + heigth + ", weigth=" + weigth
				+ ", bmiNum=" + bmiNum + ", bmiState=" + bmiState
				+ ", stateIconId=" + stateIconId + ", calaTime=" + calaTime
				+ "]";
	}

}


  step2:Service(服务)层:com.kedi.bmi.service/DataService.java

<span style="font-size:14px;">package com.kedi.bmi.service;

import java.io.Serializable;
import java.util.List;

import android.app.Service;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.IBinder;

import com.kedi.bmi.dao.BmiDao;
import com.kedi.bmi.model.Bmi;

/**
 * 数据服务
 * 
 * @author 科弟
 * 数据服务:
		(1)创建数据服务public class DataService extends Service ;
		(2)编写数据服务逻辑(对数据库的增,删,改,查);
		(3)在AndroidManifest.xml中注册数据服务DataService;
		(4)在MainActivity的onCreate()方法中通过startSer
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值