51服务的开启方式

服务开启方式的知识点见博文:http://blog.csdn.net/zengmingen/article/details/49425161


步骤:

1、新建Android项目名“51服务的开启方式”

2、新建一个类 MyService,继承 Service

3、在清单文件里配置第二步建的service

4、在Myservice类中覆写 onBind,onUnbind,onCreate,onStartCommand,onDestroy,并在这些方法里写上简单的syso

5、编写activity_main.xml布局文件,简单的放置4个按钮,按钮设置onclick方法

6、编写按钮方法


API解释:

bindService(Intent service,ServiceConnection conn, int flags)

作用:绑定服务。将参数service里的服务,通过服务连接ServiceConnection 以参数flags的方式绑定服务

service:设置了要启动的服务,本地或远程服务

conn:该类有两个回调方法

1、public void onServiceConnected(ComponentName name, IBinder service) 

该方法在MyService类的onBind()方法返回一个IBinder 的实例的时候被调用。如果返回的null,则不被调用。

2、public void onServiceDisconnected(ComponentName name)

该方法在连接正常关闭的情况下是不会被调用的, 该方法只在Service 被破坏了或者被杀死的时候调用。例如, 系统资源不足, 要关闭一些Services, 刚好连接绑定的 Service 是被关闭者之一,  这个时候onServiceDisconnected() 就会被调用。

flags:一般选择使用 BIND_AUTO_CREATE,它是Context的常量,自动根据服务是否存在创建服务


代码:


MyService.java

package com.example.serviceway;import android.app.Service;
import android.content.Intent;
import android.os.IBinder;public class MyService extends Service {@Overridepublic IBinder onBind(Intent intent) {System.out.println("MyService:onBind()");return null;}@Overridepublic boolean onUnbind(Intent intent) {System.out.println("MyService:onUnbind()");return super.onUnbind(intent);}@Overridepublic void onCreate() {System.out.println("MyService:onCreate()");super.onCreate();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {System.out.println("MyService:onStartCommand()");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {System.out.println("MyService:onDestroy()");super.onDestroy();}}


MainActivity.java

package com.example.serviceway;import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;public class MainActivity extends Activity {private Intent intent;private ServiceConnection conn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);intent=new Intent();intent.setClass(this, MyService.class);conn=new MyServiceConnection();}public void startService(View v){startService(intent);}public void stopService(View v){stopService(intent);}public void bindService(View v){//BIND_AUTO_CREATE 是上下文里的常量,如果服务不存在,则自动创建bindService(intent, conn, BIND_AUTO_CREATE);}public void unBindService(View v){unbindService(conn);}class MyServiceConnection implements ServiceConnection{@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {//服务连接成功时,该方法调用System.out.println("MyServiceConnection:服务连接了!");}@Overridepublic void onServiceDisconnected(ComponentName name) {//服务失去连接时,该方法调用System.out.println("MyServiceConnection:服务连接断开了!");}}}

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.serviceway"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.serviceway.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name="com.example.serviceway.MyService"></service></application></manifest>



运行结果:


开启服务:

10-26 08:38:26.386: I/System.out(2072): MyService:onCreate()
10-26 08:38:26.386: I/System.out(2072): MyService:onStartCommand()

停止服务:

10-26 08:39:03.076: I/System.out(2072): MyService:onDestroy()

绑定服务:

10-26 08:39:21.436: I/System.out(2072): MyService:onCreate()
10-26 08:39:21.436: I/System.out(2072): MyService:onBind()

解绑服务:

10-26 08:39:48.807: I/System.out(2072): MyService:onUnbind()
10-26 08:39:48.807: I/System.out(2072): MyService:onDestroy()

绑定服务---->返回键退出activity

10-26 08:40:34.818: I/System.out(2072): MyService:onCreate()
10-26 08:40:34.818: I/System.out(2072): MyService:onBind()
10-26 08:40:36.578: I/System.out(2072): MyService:onUnbind()
10-26 08:40:36.578: I/System.out(2072): MyService:onDestroy()

activity销毁,服务销毁

绑定服务---->home键

10-26 08:41:16.698: I/System.out(2072): MyService:onCreate()
10-26 08:41:16.698: I/System.out(2072): MyService:onBind()

activity还在,服务没销毁

开启服务----->返回键退出activity

10-26 08:42:43.020: I/System.out(2072): MyService:onCreate()
10-26 08:42:43.020: I/System.out(2072): MyService:onStartCommand()

activity销毁,服务不销毁

--------------------------------------

开启服务---->绑定服务---->停止服务

10-26 08:44:05.991: I/System.out(2072): MyService:onCreate()
10-26 08:44:06.001: I/System.out(2072): MyService:onStartCommand()
10-26 08:44:07.402: I/System.out(2072): MyService:onBind()

停止服务按钮使劲点,服务也没有停止销毁,why?

因为绑定服务后,停止服务是无效的,需要使用解绑方法,解绑的时候同时销毁服务

开启服务---->绑定服务---->---->停止服务----->解绑服务

10-26 08:55:52.942: I/System.out(2545): MyService:onCreate()
10-26 08:55:52.942: I/System.out(2545): MyService:onStartCommand()
10-26 08:55:53.871: I/System.out(2545): MyService:onBind()
10-26 08:55:56.691: I/System.out(2545): MyService:onUnbind()
10-26 08:55:56.691: I/System.out(2545): MyService:onDestroy()


代码下载,0积分下载

http://download.csdn.net/detail/zengmingen/9214327


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java mysql 存储图片_Java存储图片到Mysql

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼【1】视图层action"${ctx}/web/UserInforServlet?methoduserInforServlet" >更换头像立即提交重置var layer,upload,form;//1-页面数据加载$(function () {//【1】加载&初始化layui模块-弹出层与table数据表格la…

JavaWeb应用配置文件安全解决方案

这里主要说说JavaWeb应用的配置文件安全&#xff0c;通常JavaWeb应用多多少少会有一些配置文件&#xff0c;其中数据源的配置则是关系到数据库的安全&#xff0c;另外还有一些基于文件的权限配置&#xff0c;应用程序的一些系统参数。鉴于这样的情况&#xff0c;如果配置文件被…

java 免费cms_开源 免费 java CMS

Bug修复:1.菜单管理&#xff1a;删除操作按钮后不能直接进行删除菜单操作。2.删除单位时操作记录不显示单位名称问题。3.站点管理&#xff1a;改变所属站点增加改变为一级站点功能&#xff0c;上传非图片logo时虽然提示但仍上传成功问题。4.模板文件管理&#xff1a;点击查看/下…

Android加载大图片不OutOfMemoryError

Android加载图片时&#xff0c;对于分辨率小&#xff0c;配置低的机子&#xff0c;很容易发生OutOfMemoryError。手机的内存比图片的大很多&#xff0c;怎么会这样&#xff1f; 在设置Android虚拟机的内存时&#xff1a; RAM&#xff1a;模拟器的内存空间 VM Heap&#xff1a;…

任务计划、chkconfig工具、systemd管理服务、unit、target

比如备份数据或者重启服务。 crontab -u、-e、-l、-r&#xff08;删除&#xff09; 格式&#xff1a;分 时 日 月 周 user command 文件/var/spool/cron/username 分范围0-59&#xff0c;时范围0-23&#xff0c;日范围1-31&#xff0c;月范围1-12&#xff0c;周1-7 可用格式1-5…

vue打卡日历_Vue日历

new Vue({el: ‘#calendar‘,data: {currentDay: 1,currentMonth: 1,currentYear: 1970,currentWeek: 1,days: [],addDay: [],},created: function() {this.initData(null);var $this this;//请求数据$.ajax({url: "这里填接口名称",type: "POST",data: {…

android Intent机制详解

原文出处&#xff1a;http://blog.csdn.net/t12x3456/article/details/7688154 什么是Intent Intent是一种运行时绑定&#xff08;run-time binding&#xff09;机制&#xff0c;它能在程序运行过程中连接两个不同的组件。通过Intent&#xff0c;你的程序可以向Android表达某种…

python基本数据类型(四)-集合与运算符-python3笔记

1.集合 2.字典 3.运算符优先级 1.集合 创建&#xff1a;() set() 注意&#xff1a;创建空的集合要用set() 特点&#xff1a;元素唯一&#xff0c;无序 运算&#xff1a; &&#xff08;交集&#xff09; |&#xff08;并集&#xff09; -&#xff08;差集&#xff0…

Android的权限

Android有四种权限&#xff1a; 1、Permission 权限 2、Root权限 3、Bootloader的解锁 4、Radio(基带)解锁 ------------------------------------ 1、Permission 我们在开发中经常使用到 Permission 权限&#xff0c;即一系列"Android.Permission.*"对象。…

hive2 java连接_用Java代码通过JDBC连接Hiveserver2

1.在终端启动hiveserver2#hiveserver22.使用beeline连接hive另外打开一个终端&#xff0c;输入如下命令(xavierdb必须是已经存在的数据库)#beeline -u jdbc:hive2://localhost:10000/xavierdb -n hive -p hive3.添加maven依赖org.apache.hivehive-jdbc1.1.0junitjunit4.9org.ap…

java 向上抛异常_Java 异常的处理方式throws

在昨天的文章《Java 异常的分类与处理》中我们简单地了解了一下在方法声明的位置上使用throws关键字向上抛出异常&#xff0c;下面深入讲解异常的第一种处理方式throws。下面深入讲解异常的第一种处理方式throws。看以下例子&#xff1a;import java.io.*;public class Excepti…

Jquery mobile 解决IOS9selectli闪退问题

升级IOS9后&#xff0c;JQuery mobile 出现了个bug问题。<select>&#xff0c;<ul><li></li></ul> 出现闪退。 解决方法&#xff1a; 必须加在 jquery.js 和 jquerymobile.js 中间 <script src"......../...../jquery-2.0.0.min.js&qu…

JAVA通过SSL证书创建MS AD账户及设置密码

近期由于工作需要整理一下自动化的东西&#xff0c;因为公司去年上线了OA&#xff0c;所以公司的入职系统会提交用户的信息到IT部门&#xff0c;最早的做法是入职到了&#xff0c;IT部门收集用户信息在AD中创建对应的用户信息&#xff0c;所以为了提高管理员的工作效率&#xf…

java 实体类规范_实体类的规范

1.Boolean类型1.1.使用Boolean类型,而不是Byte类型1.2.数据库字段名使用is_开头1.3.实体类字段名不使用is开头例子/*** 是否为新消息*/Column(name "is_new_message", nullable false)private Boolean newMessage;2.Enum类型1.使用Convert注解, 并指定coverter类例…

01电话拨号器

实例非常简单&#xff0c;意在体验Android的Intent&#xff0c;用户权限。 Intent 见 http://blog.csdn.net/zengmingen/article/details/49586045 用户权限 见 http://blog.csdn.net/zengmingen/article/details/49586569 --------------------------------------------------…

微信小程序笔记六模块化 —— module.exports

微信小程序中所有 js 文件作用域皆为独立的&#xff0c;每一个 js 文件即为一个模块。模块与模块之间的引用通过 module.exports 或 exports 对外暴露接口。 注意&#xff1a; exports 是 module.exports 的一个引用&#xff0c;因此在模块里边随意更改 exports 的指向会造成未…

java常用的统计_(OJ)Java常用类-统计数字次数

统计数字次数Problem Description命令行输入一个由数字组成的任意字符串,统计出每个数字出现的次数。Input Description1239586838Output Description0 counts:01 counts:12 counts:13 counts:24 counts:05 counts:16 counts:17 counts:08 counts:39 counts:1解题代码import ja…

02发送短信

使用SmsManager发送短信java.lang.Object ↳android.telephony.SmsManagerManages SMS operations such as sending data, text, and pdu SMS messages. Get this object by calling the static method SmsManager.getDefault().管理短信操作&#xff0c;如发送数据&#xff…

Python运行环境与异常处理

Python的命令格式&#xff1a; python [option] ... [-c cmd | -m mod | file | -] [arg] ... 选项描述-J 启动将从Python3中删除或更改某些功能的警告 -B阻止在导入时创建.pyc或.pyo文件-E忽略环境变量-h打印所有可用命令行选项的列表-i在程序执行后进入交互模式-m module以脚…

Java应用一般架构

原文链接&#xff1a;http://www.iteye.com/news/31115 当我们架设一个系统的时候通常需要考虑到如何与其他系统交互&#xff0c;所以我们首先需要知道各种系统之间是如何交互的&#xff0c;使用何种技术实现。 1. 不同系统不同语言之间的交互 现在我们常见的不同系统不同语…