关于android中两种service的编写简单总结

1.startservice (两种方法,继承service类或者继承intentservice 类)

继承service类,在onstartcommend重载方法中实现业务逻辑的处理,如果耗时过长最好新开一个线程,因为默认是在程序的主线程中,会造成阻塞等问题。

在有多个请求的时候,为了防止在第一个请求结束服务的时候第二个请求刚好传入,但因为服务被结束而失败,可以使用startid 配合 stopself(startid)进行判断,如果stopself(startid)中的ID与现有onstartcommdID不同的话就不会结束服务。

继承intentservice类,在onhandleintent中实现业务逻辑,该类其实是封装了hanlder处理方法,每次都是新开一个线程,可以排队处理多个请求,可以对请求进行异步处理,不用担心UI阻塞的问题,在所有的请求都处理完毕之后会自动关闭服务

2.bindservice

依然是继承service类,是通过startbindservice()进行启动,在service中实现onbind()进行业务处理,可以绑定多个启动者,并在onbind方法的返回值处返回自定义的继承了Binder类的实例,来让启动Activity获得该实例,用来执行一些service内部的公用方法,实现调用者和服务之间的通信。

当每一个该类型服务的调用者都与该service解除绑定之后,该实例会自动销毁。

时间: 2025-01-12 20:26:01

关于android中两种service的编写简单总结的相关文章

Android中两种序列化方式的比较Serializable和Parcelable

Serializable和Parcelable接口可以完成对象的序列化过程,当我们需要通过Intent和Binder传输数据时就需要使用者两种序列化方式.还有,我们需要对象持久化到存储设备或者通过网络传输给其他客户端,这个使用也需要使用Serializale来完成对象的序列化.在Android应用开发中,这两种方式都很常见,但两者方式并不相同. 1.Serializable接口 Serializable接口是Java提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作.使用

android中两种方式打开网页

一.你要打开一个网页你可以自己写一个webview,在自己的程序中就可以打开. wv = (WebView) findViewById(R.id.webView1); wv.getSettings().setJavaScriptEnabled(true); wv.setScrollBarStyle(0); WebSettings webSettings = wv.getSettings(); webSettings.setAllowFileAccess(true); webSettings.se

Android的两种菜单

Android子菜单和选项菜单与上下文菜单的实现 菜单在Android开发中必不可少,可是要怎么实现各种菜单呢?是不是很头疼呢?下面我就来介绍一下: 1. 选项菜单和子菜单的实现 选项菜单:最常规的菜单,Android中把它叫做option menu.选项菜单最多只能显示6个菜单项,超过6个时,第6个菜单项会被系统替换为一个叫“更多”的子菜单,原来显示不下的菜单项都作为“更多”菜单的子菜单项. 子菜单:Android中点击了子菜单将弹出悬浮窗口显示子菜单项.子菜单不支持嵌套,即子菜单中不能再包括

Android中三种超实用的滑屏方式汇总(转载)

Android中三种超实用的滑屏方式汇总 现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习惯性的有事没事的左右滑屏,也不知道在干什么...嘿嘿),由于前段时间项目的需要,所以也对其研究了一下,总的来说滑屏实现有三种方式:(至于其他的实现方式目前后还没碰到...) 1.ViewPager 2.ViewFlipper 3.ViewFlow 一.ViewPager 官方文档介绍:http://developer.android.com/reference/

android使用两种方式注册receiver

1. package com.example.myreceiver; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; import android.view.Menu; import android.view.View; public class MainActivity extends Activi

Javascript中两种最通用的定义类的方法

在Javascript中,一切都是对象,包括函数.在Javascript中并没有真正的类,不能像C#,PHP等语言中用 class xxx来定义.但Javascript中提供了一种折中的方案:把对象定义描述为对象的配方(先看一下例子会比较容易理解).定义类的方法有很多种,这里有两中较为通用的方法,大家参考一下.这两种方法均可以解决 构造函数会重复生成函数,为每个对象都创建独立版本的函数的问题.解决了重复初始化函数和函数共享的问题??提示音:http://www.huiyi8.com/tishiy

service的生命周期以及两种service的差异

图片来源网络 可以看到,两种service的生命周期都相对简单,有一点不同的是,Intentservice每次调用的时候都执行onstartcommand,而boundservice一旦启动了之后,就不会每次执行onbind 在启动服务的activity消亡时,Intentservice不会消失,而boundservice的所有绑定者都消亡的时候,会消失 Intentservice一般不于启动者互动,而boundservice可以实现信息传递

struts2中两种validation.xml的配置方式_百度文库

在struts中,根据配置的validation.xml文件进行页面输入项目的验证已经众所周知,本文介绍在struts2中两种validation.xml的配置方式.可以根据不同的需要进行不同的配置. 以下以login页面输入firstname,lastname,和age为例进行说明.struts.xml中,成功的话转向成功页面.不成功的话转回到原页面. 首先建立userbean文件.文件名:UserBean.java包:struts2.login.bean文件内容:package struts

[整理]android中几种常见的尺寸

获取屏幕宽高尺寸的三种代码形式 在Android上,目前我知道的获取屏幕尺寸的方法有三种不同的代码形式 方法1.在Activity中最常见的调用方式 WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); int screenWidth = display.getWidth(); int screenHeight = display.getHeig