`

有关Android调用服务全解析

阅读更多

在Android里面进行Android调用服务, intent filter 是一个默认的 IntentFilter 对象,其他所有的filters 必须在装箱单中声明。
进行Android调用服务时,你的程序只需要建立一个intent对象,这个intent对象包含请求的数据,并调用startActivity(),当前的acitivity被弹出栈,之前的activity成为正在运行的。
被激活的activity可以通过调用 getIntent() 方法获取激活它的intent。Android调用服务acitivity的onNewIntent() 方法来传送其他后来的intent。(注:一个activity可以同时被多个intent激活)Activity经常会调用其他的activity,如果它需要被调用的activity返回的数据,可以调用startActivityForResult() 方法,而不是 startActivity()。
例如,某个activity调用另外一个activity用来让用户选择一个图片,另外一个activity应该返回用户选择的图片。结果通过第一个activity的onActivityResult() 返回,返回的形式也是intent。service通过调用 Context.startService()被开始。Android调用服务的onStart() 方法,并把intent传送给它。
类似的,intent可以通过 Context.bindService() 方法建立同正在运行的服务的联系。服务通过onBind() 方法获取intent。如果服务没有启动, bindService() 方法可以选择是否启动服务。例如,一个activity可能会想建立与后台播放音乐的服务的通信。
这样用户就可以通过activity控制后台的播放。因此activity可能会调用 bindService() 方法来建立连接,然后再调用service公开的接口。程序可以调用Context.sendBroadcast(), Context.sendOrderedBroadcast(), 和Context.sendStickyBroadcast()来传递intent初始化一个broadcast。broadcast 通过 onReceive() 方法接收。
在Android开始一个应用程序之前,它必须知道有哪些文件,因此程序必须在一个manifest文件中声明所有用到的组件。这些声明的组件会被编译到apk文件中。.apk 文件含有程序源代码和资源。
(注:相当于项目文件)装箱单是一个xml文件,在所有的程序中命名都是AndroidManifest.xml 。它还有一些其他 的功能,如:指明需要连接的库、识别程序希望被授予的权限。
但是装箱单的主要任务还是向android声明程序的组件。一份装箱单的例子:
1. <?xml version="1.0" encoding="utf-8"?> 
2.  
3. <manifest . . . > 
4.  
5.     <application . . . > 
6.  
7.         <activity android:name="com.example.project.FreneticActivity" 
8.  
9.                   android:icon="@drawable/small_pic.png" 
10.  
11.                   android:label="@string/freneticLabel"   
12.  
13.                   . . . > 
14.  
15.         </activity> 
16.  
17.         . . .  
18.  
19. </application> 
20.  
21. </manifest> 

<activity> 节点的name 属性指明了 Activity 的类名. icon 和 label 属性指明了展示activity时用到的资源。另一个节点的含义差不多 — <service> 是用来声明services的, <receiver> 用来声明broadtcast。
Android调用服务声明 content providers. Activities, services。 content providers需要声明,对系统不可见。另外, broadcast receivers可以不在装箱单中声明,可以动态得在代码中声明。
(见BroadcastReceiver 对象)通过 Context.registerReceiver()方法向系统注册。对用户来说,即使地图程序是定义在另外一个程序中、在另外一个进程中运行,但是它看起来好像你的程序的一部分。
Android通过将2个activities放在用一个任务中,使得用户有这样的体验。这一系列的activities,安排在一个堆栈中。堆栈中的根activity是任务的开始,或者说是用户选择的应用程序的第一个activity。堆栈顶部的activity 是当前正在运行的activity— 目前正在吸引用户注意的一个。
当一个activity启动另外一个的时候,新的activity被压栈,变为当前activity. 之前的activity 还在任务中。当用户点击后退(BACK)键,当前的acitivity被弹出栈,之前的activity成为正在运行的。
分享到:
评论

相关推荐

    Android Framework精编内核解析

    《Android Framework精编内核解析》是一本深入探讨Android系统核心框架层的专著,它主要涵盖了Android系统架构的关键组成部分,旨在帮助读者理解和掌握Android应用开发背后的机制。在这个压缩包中,包含了一份名为...

    字节面试Android11.0最新Framework解析

    《字节面试Android11.0最新Framework解析》是一份专为程序员面试准备的资料,主要聚焦于Android系统的深层机制,特别是针对Android 11.0版本的Framework层进行了深入剖析。Framework是Android系统的核心部分,它定义...

    Android_JSON数据解析

    总结,Android中解析JSON数据涉及的关键知识点包括JSON的基本结构、Gson库的使用、JSONObject和JSONArray的操作、Volley库的网络请求以及Retrofit框架的使用。这些工具和技术使得Android开发者能够高效地处理服务器...

    Android源码设计模式解析与实战.pdf

    《Android 源码设计模式解析与实战》不仅分析了Android源代码的设计模式,更结合实例演示了如何使用这些设计模式。看这本书,既能学到如何分析、学习Android源代码,又能提高自己架构设计水平 《Android 源码设计...

    android使用SAX解析xml

    本篇文章将详细介绍如何在Android环境中使用SAX解析器来处理从网络获取的XML文件。 1. **XML与SAX解析基础** - XML是一种结构化的文本数据表示方式,它定义了标签、属性等规则,使数据具有自解释性。 - SAX解析器...

    android系统启动全程解析

    Android系统启动全程解析 Android系统启动是一个复杂而有序的过程,涉及多个层次的协同工作,从硬件初始化到用户界面呈现。本文将深入探讨Android系统启动的三个主要阶段:Linux系统层、Android系统服务层以及...

    android中使用PULL解析XML

    本文将深入探讨如何在Android中使用PULL解析器(Pull Parser)来解析XML文档,这是一种轻量级且高效的解析方式。 **PULL解析器概述** PULL解析器(Pull Parsing)是一种事件驱动的解析模型,它不需要完整的XML文档...

    android调用wcf获取json解析例子

    总结一下,Android调用WCF服务获取JSON数据的流程包括:构建HTTP请求,发送请求,解析JSON响应。为了实现这个功能,你需要了解HTTP请求原理,掌握JSON解析方法,并熟悉如何在Android中使用相关工具或库。记住,良好...

    Android 安卓 json解析

    本文将深入探讨如何在Android平台上进行JSON解析,无需依赖任何第三方库,只使用Android SDK自带的类。我们将涵盖两种解析方式:本地JSON解析和在线JSON解析。 ### 1. JSON基础知识 JSON是一种文本格式,基于...

    android xml pull解析示例

    XML(eXtensible Markup Language)是一种用于标记...通过以上内容,我们可以了解XML Pull解析的基本概念、工作原理以及如何在Android中使用它来解析XML文档。在实际开发中,熟练掌握这一技术对于处理XML数据至关重要。

    在android中使用pull解析xml文件

    本文将深入探讨如何在Android中使用Pull解析器解析XML文件。 一、XML Pull解析器简介 XML Pull解析器(XML Pull API)是一种基于事件驱动的解析模型,它不需预先加载整个XML文档,而是逐行读取,当遇到特定的XML...

    Android Studio下使用Google Gson解析Json数据示例

    本篇文章将详细介绍如何在Android Studio环境下使用Google Gson解析Json数据。 首先,我们需要在项目中引入Gson库。打开build.gradle模块文件,并在dependencies块中添加以下依赖: ```groovy dependencies { ...

    android上使用DOM解析XML

    在Android 4.0及以上版本,我们可以使用内置的Java XML DOM API来实现XML解析。下面将详细介绍在Android中使用DOM解析XML的基本步骤和关键知识点。 1. **导入XML解析库** 在Android项目中,我们不需要额外导入库,...

    android中的解析

    本文将深入探讨Android中解析XML的相关知识点,并提供一个实际的工程例子。 **XML解析方式** 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文档加载到内存中,形成一棵树形结构,方便开发者通过...

    Android ijkplayer的使用解析

    本文将深入解析如何在Android项目中集成并使用ijkplayer。 首先,ijkplayer的核心优势在于其高度优化的编解码能力,支持多种视频和音频格式,包括但不限于MP4、FLV、RTMP、HLS等流媒体协议。这使得开发者可以轻松地...

    android下解析xml文件的demo

    在Android应用中,我们通常使用两种方式来解析XML:DOM(Document Object Model)解析器和SAX(Simple API for XML)解析器。 1. DOM解析: DOM解析器将整个XML文件加载到内存中,形成一个树形结构,可以方便地遍历...

    Android ReadXmlByPull 使用Pull解析Xml文件.rar

    要使用Pull解析器,首先需要引入`android.util.Xml`库。然后,你可以按照以下步骤操作: 1. **创建解析器实例**: 首先,你需要通过`XmlPullParserFactory`创建一个`XmlPullParser`实例。工厂类提供了`...

    六,Android Xml解析

    5. **网络数据交换**:XML常用于服务器与客户端之间的数据交换,通过HTTP或FTP等方式传输XML文件,然后使用解析器将数据转换为Java对象。 为了更好地理解和使用XML解析,开发者需要熟悉XPath语言,它用于在XML文档...

    android下的pull解析器解析和生成xml文件

    本篇将深入探讨Android下Pull解析器的使用,以及如何利用它来解析和生成XML文件。 一、Android Pull解析器简介 Pull解析器是基于事件驱动的解析模型,它不保留整个XML文档的内存映像,而是按需读取和处理XML元素。...

    Android解析midi文件

    本教程将深入探讨如何在Android中解析MIDI文件,通过Java编程语言实现。 首先,我们需要了解MIDI文件的基本结构。MIDI文件由一系列事件组成,包括音符开始、音符结束、控制器变化等。这些事件被组织在称为“轨道”...

Global site tag (gtag.js) - Google Analytics