Android应用程序由4个模块构造而成

Android应用程序由4个模块构造而成。

Activity, Intent, Content Provider, Service.


Activity. 是最基本的模块,一个Activity通常就是一个单独的屏幕。当一个新的屏幕打开后,前一个屏幕将会暂停,并保留在历史栈中。用户可以返回到历史栈中的前一个屏幕,当屏幕不再使用时,还可以从历史栈中删除。


Intent. 实现在Activity之间的切换。用于描述应用的功能。在描述中,action和data最重要。典型的action有MAIN,VIEW,PICK, EDIT等。data以URI的形式表示。

例如:查看一个人的联系方式。需要创建一个action为VIEW的Intent,以及表示这个人的URI。

向前导航调用方法:startActivity(Intent it) 

调用startActivity方法之后,系统会在IntentFilter中查找最匹配的Activity.


IntentReceiver。可以用于系统对外部事件做出响应(比如电话呼入,数据网络可用,到了晚上)。会使用NotificationManager通知用户,但不能生成UI。可以在AndroidManifest.xml中注册,也可以在代码中使用Context.registerReceiver()进行注册。


ContentProvider。android将数据保存到文件、SQLite数据库中。想将应用间共享数据时,ContentProvider可以发挥作用。在android中,每个应用都运行在各自的进程中。通常情况下,一个应用不能读取其他应用的db文件。ContentProvider提供了一套标准的接口用来获取和操作数据。Android自身也提供了现成的ContentProvider: Contacts, Browser, CallLog, Settings, MediaStore. 应用通过ContentResolver来使用ContentProvider。ContentResolver提供的方法包括query(), insert(), update()等,其参数之一URI可以理解为String形式的ContentProvider的完全路径。

举例:通过ContentProvider获得联系人数据。

    private void getContactData() {
    	// 得到ContentResolver对象
    	ContentResolver cr = getContentResolver();
    	// 取得电话本中开始一项的光标
    	Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, 
    			null, null, null, null);
    	// 向下移动光标
    	while(cursor.moveToNext()) {
    		// 取得联系人姓名
    		String name = cursor.getString(cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME));
    		// 取得电话号码
    		String number = cursor.getString(cursor.getColumnIndex(PhoneLookup.NUMBER));
    	}
    	cursor.close();
    }

使用读取联系人API,需要授权:

<uses-permission android:name="android.permission.READ_CONTACTS" />


ServiceService是一个生命周期长且没有用户界面的程序。举例:媒体播放器可以通过context.startService()来启动一个service在后台播放音乐。还可以通过context.bindService()连接到一个service上。如果这个service没有启动,则将启动它。当连接到一个service之后,还可以调用service提供的接口。

举例:实现音乐的播放和停止

1. 在Activity中启动和停止service

    private void startMusic() {
    	// 开启service
    	startService(new Intent("com.example.android.MUSIC"));
    }
    
    private void stopMusic() {
    	// 停止service
    	stopService(new Intent("com.example.android.MUSIC"));
    }

2. 扩展Service类实现音乐的播放和停止

public class MusicService extends Service {
	
	private MediaPlayer player;

	@Override
	public IBinder onBind(Intent arg0) {
		return null;
	}

	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		// 装载音乐文件
		player = MediaPlayer.create(this, R.raw.test);
		// 开始播放
		player.start();
	}
	
	@Override
	public void onDestroy() {
		super.onDestroy();
		// 停止播放
		player.stop();
	}
}

3. 在AndroidManifest.xml文件中声明Service

        <service android:name=".MusicService">
            <intent-filter>
                <action android:name="com.example.android.MUSIC"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </service>
    </application>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为实现用户需求,从需求分析阶段的数据流图出发,根据小组讨论后确定的最佳方案。本系统主要包括两大功能模块:学生信息和成绩信息两个系统。其中学生信息系统划分为七个模块,学生成绩划分为模块。然后在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据结构。在测试过程中,先对单个模块进行测试,然后把模块连接起来进行测试。测试完成后书写文档,最后小组成员和用户在一块审查和复审。 1、 课题陈述 一方面,在时下这个飞速发展的信息社会中,直到今天仍然没有一套完善可行的学生信息管理系统出现在学校里。每年,从大专生、本科生到硕士生、博士生,几千人的入学、升学、毕业,全要由教务处和各系老师人工管理。信息量之巨大,工作量之繁重,是难以想象的。因此,学校和各个系都要安排多名教师专门负责学生学籍管理,浪费了大量的人力资源。然而,即使这样,管理仍然谈不上井井有条。举一个最简单的真实例子,一个同学的姓名在花名册里印错了,就一错错了三年,一直没能改正。同学想去改,却不知道是应该找系里,还是去找教务处。还有,当学生的基本信息,比如家庭住址、电话等变更后,无法及时在档案中修改,使得老师与同学无法联系沟通。 另一方面,从社会这方面讲,随着计算机的普及,越来越多的学校利用计算机来处理日常事务。面对众多的数据资料,很多管理者常常感到无从下手。在数字化的今天,我们需要一个学生管理系统,使我们的整体管理水平上一个档次,与如今这个高科技的信息社会接轨。 因此,如何有效的管理学生信息,帮助学校和老师管理和掌握这些情况,这就是学生信息管理系统需要完成的任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值