<strong><span style="font-size:18px;">自己定义Service:</span></strong>
/**
* Created by liuwang on 15-3-15.
*/
public class MyService extends Service { private MBinder mBinder = new MBinder(); public MyService() {
super();
System.out.println("MyService---");
} @Override
public IBinder onBind(Intent intent) {
System.out.println("onBind---");
return mBinder;
} @Override
public void onCreate() {
super.onCreate();
System.out.println("onCreate---");
} @Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
System.out.println("onStart---");
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
System.out.println("onStartCommand---");
return super.onStartCommand(intent, flags, startId);
} @Override
public boolean onUnbind(Intent intent) {
System.out.println("onUnbind---");
return super.onUnbind(intent);
} @Override
public void onDestroy() {
super.onDestroy();
System.out.println("onDestroy---");
} @Override
public void onRebind(Intent intent) {
super.onRebind(intent);
System.out.println("onRebind---");
} @Override
public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent);
System.out.println("onTaskRemoved---");
} @Override
protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
super.dump(fd, writer, args);
System.out.println("dump---");
} @Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
System.out.println("onTrimMemory---");
} @Override
public void onLowMemory() {
super.onLowMemory();
System.out.println("onLowMemory---");
} @Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
System.out.println("onConfigurationChanged---");
} class MBinder extends Binder { } }

Activity:

public class MainActivity extends ActionBarActivity implements View.OnClickListener {

    private Button start;
private Button finish;
private Button onbind;
private Button unbind;
private Intent intent;
private ServiceConnection sc; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); start = (Button) findViewById(R.id.start);
finish = (Button) findViewById(R.id.finish);
onbind = (Button) findViewById(R.id.onbind);
unbind = (Button) findViewById(R.id.unbind); start.setOnClickListener(this);
finish.setOnClickListener(this);
onbind.setOnClickListener(this);
unbind.setOnClickListener(this); intent = new Intent();
intent.setClass(this,MyService.class); sc = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
System.out.println("连接成功");
} @Override
public void onServiceDisconnected(ComponentName name) {
System.out.println("连接失败");
}
}; } @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
startService(intent);
break;
case R.id.finish:
stopService(intent);
break;
case R.id.onbind:
bindService(intent,sc,BIND_AUTO_CREATE);
break;
case R.id.unbind:
unbindService(sc); break;
}
}
}

測试1:

当点击启动Service时的流程:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjcwNjc1OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

在点击绑定:

点击解绑:

最后点击关闭服务:

測试2:

点击绑定:

点击启动:

点击关闭服务:

无输出。

点击解除绑定:

总结:

当我进行启动服务和绑定服务后,假设仅仅是关闭服务或解绑服务并不会将service杀死。

当我进行启动服务后在绑定。并不会反复创建service。

先启动在绑定的流程:构造方法->oncreate->onstartcommand->onstart->onbind->onserviceconnection

先绑定service在启动service流程:构造方法->oncreate->onbind->onserviceconnection->onstartcommand->onstart

当我反复启动service仅仅会反复调用startcommand和start方法,不会反复调用oncreate

当我进行多次绑定时并不会反复创建多个service

当我绑定service而且退出activity不解绑service时,service会自己主动被关闭,而且logcat会报错

我能够利用绑定service后启动service然后退出activity解绑service,这样service还不会被kill。再次进入activity我们能够通过关闭service使service关闭。

測试Service的更多相关文章

  1. zTree实现地市县三级级联Service接口測试

    zTree实现地市县三级级联Service接口測试 ProvinceServiceTest.java: /** * @Title:ProvinceServiceTest.java * @Package ...

  2. CAS(Central Authentication Service)——windows上简单搭建及測试

    入手文章,大神绕行. 一.服务端搭建 我使用的服务端版本号为:cas-server-3.4.11-release.zip.解压之后,将\cas-server-3.4.11-release\cas-se ...

  3. java 搭建webservice服务+testclient測试

    整理别人的日志: 一.什么是webservice 一种构建应用程序的普遍模型,能够在不论什么支持网络通信的操作系统中执行.一种新的web应用程序分支,能够公布.定位通过web调用.它是一个应用组件,为 ...

  4. Maven实现Web应用集成測试自己主动化 -- 部署自己主动化(WebTest Maven Plugin)

    上篇:Maven实现Web应用集成測试自己主动化 -- 測试自己主动化(WebTest Maven Plugin) 之前介绍了怎样在maven中使用webtest插件实现web的集成測试,这里有个遗留 ...

  5. Etcd学习(一)安装和.NETclient測试

    Etcd是一个比較新的分布式协调框架,由CoreOS的开发团队开发,如今才仅仅到0.4.6版本号,还没公布1.0版本号 我看了一下GitHub上作者们的提交记录,如今应该还在如火如荼的开发以及改动Bu ...

  6. Android单元測试之JUnit

    随着近期几年測试方面的工作慢慢火热起来.常常看见有招聘測试project师的招聘信息.在Java中有单元測试这么一个JUnit 方式,Android眼下主要编写的语言是Java,所以在Android开 ...

  7. 从linux telnet到exchange邮件server来測试发送邮件

    我们在Linux下,能够通过telnet邮件server的25port(一般smtp邮件server都是这个),来測试是否能发送邮件. 前提是先得把DNS配好,或者/etc/hosts文件制定好邮件s ...

  8. Coreseek:第二步建索引及測试

    1,建索引非常easy.一行代码 g:/service/coreseek/bin/indexer -c g:/service/coreseek/etc/csft_mysql.conf   person ...

  9. Android 进行单元測试难在哪-part3

    原文链接 : HOW TO MAKE OUR ANDROID APPS UNIT TESTABLE (PT. 1) 原文作者 : Matthew Dupree 译文出自 : 开发技术前线 www.de ...

随机推荐

  1. window.postMessage实现网页间通信

    window.postMessage() 方法可以安全地实现跨域通信.通常,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https),端口号(443为https的默认值),以 ...

  2. Python程序数据溢出问题或出现 NAN 问题

    [数据溢出问题] overflow:溢出 overflow:上溢 underflow:下溢 数据溢出包括上溢和下溢. 上溢可以理解为:你想用一个int类型来保存一个非常非常大的数,而这个超出了int类 ...

  3. ListView回收机制相关分析

    最初的分析文档为word,该文档是直接从word文档发布,布局未做详细调整,凑合看吧. 所用源码版本为最新的Android 4.4.2(API 19).更新中…… ListView回收机制相关分析   ...

  4. OGG_Oracle GoldenGate简介(概念)

    2014-03-01 Created By BaoXinjian

  5. java 又一次抛出异常 相关处理结果演示样例代码

    java 又一次抛出异常 相关处理结果演示样例代码 package org.rui.ExceptionTest; /** * 又一次抛出异常 * 在某些情况下,我们想又一次掷出刚才产生过的违例,特别是 ...

  6. Python rstrip() 方法

    描述 Python rstrip() 方法用于删除字符串尾部指定的字符,默认字符为所有空字符,包括空格.换行(\n).制表符(\t)等. 语法 rstrip() 方法语法: S.rstrip([cha ...

  7. -174dBm的含义

    常温下(290K)一个热电阻会产生少量的噪声能量P=kTB k = 玻尔兹曼常数(1.38 x 10–23 J/K)T = 温度(K)B = 噪声带宽(Hz) 由于总噪声功率是测量带宽的函数,数值通常 ...

  8. 导入sklearn 报错,找不到相关模块

    1.问题原因::安装包的来源问题,也可以理解为包版本兼容问题,有的包使用官方出版,有的包使用whl文件安装解决方案:将所有包都统一来源,要么全部使用官方出版的包,要么全部使用whl里面的包,问题就解决 ...

  9. ios网络层优化深入浅出

    网络层是iOS开发必须掌握的部分,苹果已经将网络请求封装得非常易用了,看看NSURLRequest和NSURLConnection的文档,你就知道怎么用了,这里我就不细讲了.本文主要讲网络层的调用逻辑 ...

  10. xtrabackup迁移单独一张INNODB表