导航
当前位置:首页>>app
在线生成app,封装app

Android基础服务?

2023-11-16 围观 : 5次

android程序设计基础中service的基本原理是什么?

1.     说明

android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,比如MountService监听是否有SD卡安装及移除,ClipboardService提供剪切板功能,PackageManagerService提供软件包的安装移除及查看等等,应用程序可以通过系统提供的Manager接口来访问这些Service提供的数据,以下将说明他们的工具流程

2.     举例说明基本流程

以android系统支持sensor(传感器)实例来说明框架层的service和manager是如何配合工作的

1)         什么是sensor

sensor是传感器, 比如控制横竖屏切换利用的就是重力传感器(gsensor), 还有accelerator sensor可取得x, y, z三个轴上的加速度(应用如平衡球, 小猴吃香蕉等)

2)         应用程序调用(以下为关键代码)

sensorManager=(SensorManager)getSystemService(context.SENSOR_SERVICE);

lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

sensorManager.registerListener(sensorListener, lightSensor, SensorManager.SENSOR_DELAY_NORMAL);

3)         Manager层

a)          提供给应用程序调用的接口,同实与Service交互,实现功能

frameworks/base/core/java/android/hardware/SensorManager.java

4)         Service层

a)          开机时就运行的管理Sensor的后台服务

frameworks/base/services/java/com/android/server/SensorService.java

b)         snesor后台服务需要的JNI,通过它与系统级交互

frameworks/base/services/jni/com_android_server_SensorService.cpp

5)         系统层

a)          传感器的头文件,硬件提供商按此文件的定义实现其功能

hardware/libhardware/include/hardware/sensors.h

b)         传感器的系统层实现,与内核交互,此处通常是硬件提供商提供的

hareware/libsensors

6)         内核及硬件层

内核访问硬件,同时以设备文件等方式提供给上层控制接口和传感器数据

3.     系统层实现

1)         frameworks/base/core/java/android/*Manager.java     对应用的接口

2)         frameworks/base/core/jni/                                                     对应用的接口的JNI

3)         frameworks/base/services/java/com/android/server/    后台服务

4)         frameworks/base/services/jni/                                                        JNI与系统层接口

5)         hardware/libhardware/include/                                              系统层头文件

6)         hardware/libxxx                                                                     系统库支持

7)         内核支持

4.     应用程序如何使用

1)         查看系统提供哪些服务

find frameworks/base/core/java/android/ -name *Manager.java

此处可以看到调用系统提供服务的入口

2)         一般register listener,事件发生时都收到回调

5.    新建一个service(以froyo为例)

1)         接口:接口供应用调用

frameworks/base/core/java/android/app/ContextImpl.java  加服务名与Manager对应

frameworks/base/core/java/android/content/Context.java    加服务名定义

2)         Manager:提供服务对应的调用接口

frameworks/base/core/java/android/app/StartXXXXManager.java        实现调用接口

frameworks/base/core/java/android/app/IXXXXManager.aidl      定义调用接口

frameworks/base/Android.mk         加入aidl的编译

3)         service:提供后台服务支持

frameworks/base/services/java/com/android/server/XXXXService.java 服务实现

frameworks/base/services/java/com/android/server/SystemServer.java   启动服务

Android基础服务?  第1张

Android基础:Service —— 默默为你服务

Service有两种启动方式,分别为 context.startService() 和 context.bindService() 。这里要提到Service的生命周期,两种不同的启动方式有不同的生命周期:

Tips:

首先创建自己的Service类,重写其生命周期,并在mainfest.xml中进行注册。

必须注册Service,不然不会调用。简单注册:

补充下Service在manifest中的属性以及作用:

接下来,我们就可以用下面的两个方法来启动和停止服务。

首先在我们的Activity中创建Service连接对象,重写连接和断开的方法。创建自定义的Binder对象,在 onServiceConnected() 中赋值然后可以调用自定义Binder中的方法。使用下方的bind()方法来绑定服务,使用 unBind() 来解绑服务。

这里会用到Service的 onBind() 和 onUnbind() 的生命周期,我们在TestService中重写之。这里要注意的是,使用bindService()方法启动的Service,不会调用 onStartCommand() 的生命周期。此外,创建自定义Binder类和对象。

这样,当我们使用Activity中的bind()方法来绑定服务,会自动启动服务,而我们又重写了 onServiceConnected() 方法并使用myBinder来调用方法。这样我们就可以用它来Activity和Service来进行通信。

特别Tips:

如果先使用 startService() 来开启服务和 bindService() 来绑定服务,当使用 unbindService() 解绑时,Service并不会被销毁。而是使用 stopService() 才能销毁服务。

前台服务和后台服务的区别:

在Service中进行操作,将服务类型以前台的方式运行显示在通知栏。

运行效果:

暂时引用吧,有空再实现一个:

参考资料:

开发Android需要具备哪些基础技能

①Java基础知识 ②Linux基础知识 ③数据库基础知识 ④网络协议 ⑤Android基础知识 ⑥服务器端开发知识①Java基础知识很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。万丈高楼平地而起,Java就是筑起高楼的每一块砖头。那么Java学到什么程度才算是过关呢?我个人认为至少要掌握以下两个方面的内容:a)Java基础语法:具体的知识点列表可以在这里下载:《Java知识点列表》V1.0。这部分内容没有讨价还价的余地,必须烂熟于胸。至于具体的学习方法,可以看书或者是看视频,但是关键是要多加练习,无论是书上的练习还是视频里面的练习,都需要仔仔细细的完成;b)设计模式:由于在Android系统的框架层当中,使用了大量的设计模式,如果没有这个方面的知识,对于Android的理解就会大打折扣。设计模式的种类非常之多,一个一个的全部掌握,是不现实的,必须首先掌握面向对象的基础设计原则,有了这些基础原则的支持,就可以举一反三。这部分内容可以在《Effective Java》和《Agile.Software.Development:Principles,Patterns.and.Practices》这两本书中找到。②Linux基础知识大家都知道,Android系统的基础是Linux操作系统。在开发过程当中,我们也需要使用到一些Linux命令。所以说一些Linux的基础知识是必须的(话说现在的程序员,不懂Linux都不好意思跟人家打招呼),推荐大家看看《鸟哥的私房菜》这本书,写的相当不错;③数据库基础知识这个比较简单,就是一个增删改查的数据库操作,可以看一下这本书:《SQL编程练习与解答》④网络协议至少需要学习两种基础的协议,HTTP协议与Socket协议;⑤Android基础知识有了以上的铺垫,再来看Android,是不是觉得轻松了很多呢?至于基础知识的学习顺序,最好的方法就是按照Android SDK帮助文档当中的Dev Guide里面的顺序,我的《Android视频教程》也基本上是按照这个顺序录制的;⑥服务器端开发知识由于很多Android应用程序都需要服务器端的支持,所以掌握一些服务器端开发知识还是非常有必要的。至于选择哪一种服务器端知识进行学习,就比较麻烦了,因为技术的种类实在是太多了:a)Java EE:就是上面邮件当中所提到的SSH—Struts+Spring+Hibernate。这种技术的优点的功能完整、强大,已经使用了很多年,而且既然大家已经非常熟悉Java了,那么学习SSH看起来也顺理成章。但是使用这种技术开发服务器端程序,非常麻烦。即使是一些简单的功能,也可能需要大量的代码和配置文件来实现;b)PHP:简单易学,开发快速。但是我们需要多学一种语言,是否得不偿失,就要大家自己判断了;c).NET:这项技术的特点和Java EE差不多,但是要想掌握.NET,则需要掌握c#,也是个麻烦的事情;d)ruby on rails:这是我个人最喜欢的服务器端技术,简洁,优雅,寥寥几行代码,就可以实现很复杂的功能,但是这需要Ruby语言知识作为基础;至于选择哪一种知识,就看大家自己的判断了,毕竟每个人想法不一样,爱好也不相同。2怎样去获得这些技能基础。(android大牛请绕开此段)看书,这确实是一个不错的选择。如果你想从零开始学习Java、Linux、数据库、网络协议、android基础知识……没错这些你都需要看书,看很多书(这是一句废话,跳过好了)。但是!如果把获取这些技能基础量化为100%的话,那么看书这个途径只能为你提供15%的进步。看视频,这也是许多自学android开发的新手必经之路,毕竟看书只有你一个人的思维在活跃,看视频至少是两个人的思维在碰撞,你能发现你与别人的不同,如果你有心,你就能进步更多。基础知识不用我担心太多,至少想学android的,找基础知识的资料还是没有问题的。在此你也可以试着了解一些android的基础视频。也可以加入一下android的QQ群,去初步了解一下。感受一下氛围。这个我个人觉得很有意义。敲代码,不为了其它的什么,就为了你能够熟练的掌握android开发工具,你是不是应该多话一点心思在上面呢?他的重要性不比“看书+看视频”的总和小,也许我就这样轻描淡写地说过去了,但是你最好不要轻描淡写地看过去,不然“返工重做”是很让你不舒服的。思考,没错,就是“想”。想你怎么把这三块儿合在一块儿,让自己的学习效率更高;想你在学习中遇到哪些障碍,最后是怎么解决的,这很重要!

安卓开发需要学习什么

学习分三个阶段:

1,Android基础阶段:平台架构特性(JAVA/C) Market/应用程序组件 环境搭建与部署/打包与发布 AVD/DDMS/AAPT 调试与测试 相关资源访问/资源制作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及深层实现

2,Android进阶初级:组件Widget/ 菜单Menu/ 布局Layout 详解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL数据库原理,。

SQLite /SharedPreferences/File详解 多媒体Audio/Video/Camera 详解

3,Android进阶高级:蓝牙/WIFI SMS/MMS 应用实现 深层次解析GPS原理。

实现LocationManager/LocationProvider 进行定位/跟踪/查找/趋近警告以及Geocoder正逆向编解码等技术细节 2D图形库(Graphics/View)详解 SDCARD/传感器/手势 应用实现

扩展资料:

知识体系

1、Unix/Linux平台技术:基本命令,Linux下的开发环境

2、企业级数据库技术:SQL语言、SQL语句调优、Oracle数据库技术

3、Java 语言核心技术:Java语言基础、Java面向对象编程、JDK核心API、Java集合框架、Java网络编 程、JavaI/O编程、Java多线程编程、Java异常机制、Java安全、JDBC、XML

4、软件工程和设计模式:软件工程概述、配置管理及SVN、UML、基本设计模式

5、Android应用开发基础:Android开发平台、Eclipse+ADT开发环境、AVD及传感模拟器调试、Android核心组件、Android常用组件、Android高级组件、文件及网络访问、SQLite数据库编程、后台服务编程

6、互联网核心技术: HTML、CSS、JavaScript、JQuery、Ajax应用

7、Android高级应用开发:音频视频摄像头、互联网应用、GPS和位置服务、Google Map、2DD绘制、传感器开发、游戏开发、电话及SMS服务、网络BluetoothWi-Fi等。

8、Android系统级开发:移植、驱动、NDK(C方向)。

9、JavaEE核心技术:Servlet核心技术、JSP核心技术、Struts、Spring、Hibernate框架。

参考资料:百度百科---android开发

相关文章
  • android闹钟app开发

    Android闹钟是一个非常常用的应用程序。它可以帮助我们在指定时间提醒我们起床、完成任务或者其他重要的事情。在本文中,将详细介绍Android闹钟的开发原理。1. 创建Android工程首先,我们需要创建一个Android工程。在Android Studio中,你可以点击"Start a new ...

    2023-11-04
  • 在线封装app

    在当今快速发展的互联网时代,移动应用程序(App)已经成为了人们日常生活中不可或缺的一部分。从社交、购物、娱乐到工作、学习,众多的应用程序已经涵盖了各个方面,为人们带来了极大的便利。然而,开发一个功能完备、设计精良的移动应用程序并不是一件容易的事情,需要一定的技术和成本投入。在线封装App就是一个简...

    2023-11-27
  • uniapp和安卓混合开发

    Uniapp是一种跨平台开发框架,通过使用Vue.js框架开发跨平台应用程序,可以在同一代码库中实现iOS、Android、Web和小程序应用程序的构建。它结合了许多不同的技术,包括Vue.js、Webpack、Node.js等等,开发者可以通过uniapp的cli工具进行快速构建、编译和打包应用程...

    2023-11-12
  • kotlin开发安卓框架

    Kotlin是一种语言,它可以用于构建安卓应用程序。Kotlin被广泛使用,因为它类型安全、简单、直观,并可以与Java无缝地交互工作。为了帮助程序员更好地利用Kotlin,被开发了一些安卓框架。这里介绍一下kotlin开发安卓框架的原理或详细介绍。一、Kotlin和安卓框架相关的原理1.类型安全性...

    2023-11-08
  • oppo r17安卓10开发者选项怎么找

    开发者选项是一个在安卓系统中隐藏的高级设置选项,可以让用户开启或关闭某些高级功能,优化设备性能,甚至修改系统行为。一般情况下,这些选项不会被普通用户使用,而是供开发人员和专业用户使用。在OPPO R17手机上,开启开发者选项是十分简单的。第一步:打开设置菜单首先,我们需要打开手机的设置菜单。可以进入...

    2023-11-11