Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 408|回复: 0

开发交流:Android 调用服务大全

[复制链接]

该用户从未签到

发表于 2011-10-24 10:11:04 | 显示全部楼层 |阅读模式
   在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声明程序的组件。一份装箱单的例子:

java代码: <?xml version="1.0" encoding="utf-8"?>

<manifest . . . >

<application . . . >

<activity

android:name="com.example.project.FreneticActivity"

android:icon="@drawable/small_pic.png"

android:label="@string/freneticLabel" . . . >

</activity> . . .

</application>



</manifest>
复制代码节点的name 属性指明了 Activity 的类名. icon 和 label 属性指明了展示activity时用到的资源。另一个节点的含义差不多 — 是用来声明services的, 用来声明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成为正在运行的。
回复

使用道具 举报

该用户从未签到

发表于 2011-10-24 10:11:06 | 显示全部楼层

Re:开发交

好文章,好文章,好文章,好文章,好文章
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 02:56 , Processed in 0.400261 second(s), 45 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表