android目录

一个Andorid项目可以包含(但不一定全部包含)下面部件: 

Activity
Broadcast Intent Receiver
Service
Content Provider
在Andorid项目中,AndroidManifest.xml文件记录了该项目使用了哪些部件。下面是一个AndoidManifest.xml的例子:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.my_domain.app.helloactivity">
        
    <application android:label="@string/app_name">
    
        <activity android:name=".HelloActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        
    </application>
    
</manifest>


下面分别介绍一下这四个部件:



1. Activity(场景)

一个Activity通常是一个项目中的单一画面。每个Activity在编程时对应一个继承自android.app.Activity的JAVA类。该类表示一个包含视图(View)和行为(respond to events)的用户界面。大多数项目包含多个画面。但在同一时刻,只有一个当前画面供用户操作和查看。在程序运行过程中,随着一个新的Activity的开始,画面要进行切换。一个Activity可以返回一个值,以便下个Activity对该值进行处理。

举个例子,假设有个通讯录程序,其中包括修改联系人信息的功能。这个功能的操作流程如下:

    Activity1: 用户在功能菜单选择修改联系人

    Activity2: 显示联系人列表,如果用户选择取消,回到Activity1; 如果用户从中选择了要修改的联系人,进入Activity3

    Activity3: 显示修改联系人画面,用户在该画面完成修改

    回到Activity2

在这个过程中,Activity2会将选择的联系人作为返回值交给Actity3。在切换Activity时,每当打开一个新画面,上个画面会被Push到历史堆栈中,以便执行回退动作。比如上个例子中,Activity2中,可以回退到Activity1。可以从一个画面直接回退到之前访问的任何画面,比如当用户选择"Home",直接回退到主场景。

在上面的XML代码中,<activity>元素中包含了一个 <intent-filter> 元素。这个intent-filter又是什么呢?Intent表示一个项目想要做什么,其中包括两个重要部分:action(行为)和基于行为的数据。一般的,Action: MAIN (程序入口),VIEW, PICK, EDIT, 等。所有的数据用URI表示。比如在联系人信息画面,你可以通过向该页面指定一个VIEW Action并且将表示联系人的URI和这个Action"关联"起来。这个"关联"关系,通过IntentFilter类来表示。这样,在<activity>元素中,包含一个<intent-filter>元素,并在其中完成Action及其数据的关联,就是这样,构成了一个完整的Activity。

要完成不同画面的定向,就要靠Intent了。如果要定向到指定的Intent,就调用Activity对象的startActivity(myIntent)方法。当调用该方法时,系统会在所有的Intent-filter中查找最匹配的Intent,因为一个Activity关联了一个Intent,所以调用startActivity(myIntent)方法的结果就是从一个Activity切换到另一个Activity。当另一个Acitvity被激活时,它的startActivity()方法会被调用。



2.Broadcast Intent Receiver

使用BroadcastReceiver你可以在程序中感应系统广播Intent。BroadcastReceiver并不提供用户界面,只能通过NotificationManager通知用户某些事件发生了,比如电话铃响了,有新的可用数据连接等。BroadcastReceiver有两种注册方式:一种是通过 AndroidManifest.xml,另一种是通过Context.registerReceiver()进行注册。一个程序可以注册多个BroadcastReceiver。如果你需要的话,当某个程序注册的BroadcastReceiver被触发时,该程序可以自动启动,以处理BroadcastReceiver发出的事件。

一个程序不但可以使用BroadcastReceiver接收广播Intent。而且可以向系统广播Intent。要向系统广播Intent,你只需调用Context.sendBroadcast()方法即可。



3.Service

一个Service是常驻系统的,没有UI(用户界面)的。举个例子,你可以在手机上一边听音乐,一边编辑短信,此时音乐播放器并没有显示界面,而是在后台运行。要实现这样的功能,就要用到Service了。当需要后台运行时,这个音乐播放器程序可以调用Context.startService()方法让程序继续在后台运行,直到程序运行完毕。

4.Content Provider

有的程序需要存储数据的地方,比如文件、SQLite数据库,或其他机制。Content Provider允许你的程序可以和其他程序共享数据。一个Content Provider实际上就是一个包含了可以供其他程序访问共享数据的方法的类。

以上四类中,适用于不同的程序,也可以混合适用,以达到丰富的效果。当然,最常用的还是Activity。

你可能感兴趣的:(编程,android,xml,sqlite,音乐)