Start Service启动的Service,Application退出,Service也不会退出;

Bind Service启动的Service,Application退出,Service就会退出。

Start Service和Stop Service仅仅是启动服务,并不能进行通信。通过Bind Service与服务进行绑定,才能与服务通信。

package com.example.servdemo;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity implements OnClickListener, ServiceConnection { private Button btnStartService, btnStopService, btnBindService, btnUnbindService, btnGetCurrentNum;
private Intent serviceIntent;
private EchoService echoService = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); serviceIntent = new Intent(this, EchoService.class); btnStartService = (Button) findViewById(R.id.btnStartService);
btnStopService = (Button) findViewById(R.id.btnStopService);
btnBindService = (Button) findViewById(R.id.btnBindService);
btnUnbindService = (Button) findViewById(R.id.btnUnbindService);
btnGetCurrentNum = (Button) findViewById(R.id.btnGetCurrentNum); btnStartService.setOnClickListener(this);
btnStopService.setOnClickListener(this);
btnBindService.setOnClickListener(this);
btnUnbindService.setOnClickListener(this);
btnGetCurrentNum.setOnClickListener(this);
} @Override
public void onClick(View v) { switch (v.getId()) { case R.id.btnStartService:
startService(serviceIntent);
break; case R.id.btnStopService:
stopService(serviceIntent);
break; case R.id.btnBindService:
bindService(serviceIntent, this, Context.BIND_AUTO_CREATE);
break; case R.id.btnUnbindService:
unbindService(this);
echoService = null;
break; case R.id.btnGetCurrentNum:
if (echoService != null) {
System.out.println("The Number is "+echoService.getCurrentNum());
}
break;
}
} @Override
public void onServiceConnected(ComponentName name, IBinder binder) {
System.out.println("onServiceConnected!"); echoService = ( (EchoService.EchoServiceBinder)binder ).getService();
} @Override
public void onServiceDisconnected(ComponentName name) { } }
package com.example.servdemo;

import java.util.Timer;
import java.util.TimerTask; import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder; public class EchoService extends Service { @Override
public IBinder onBind(Intent intent) {
System.out.println("onBind!");
return echoServiceBinder;
} private final EchoServiceBinder echoServiceBinder = new EchoServiceBinder(); public class EchoServiceBinder extends Binder{
public EchoService getService() {
return EchoService.this;
}
} public int getCurrentNum(){
return i;
} @Override
public void onCreate() {
// TODO Auto-generated method stub
System.out.println("Service Start!");
startTimer();
super.onCreate();
} @Override
public void onDestroy() {
// TODO Auto-generated method stub
System.out.println("Service Stop!");
stopTimer();
super.onDestroy();
} private int i = 0; public void startTimer(){
if(timer == null){
timer = new Timer();
timerTask = new TimerTask() { @Override
public void run() {
i++;
System.out.println(i);
}
}; timer.schedule(timerTask, 1000, 1000);
}
} public void stopTimer(){
if(timer != null){
timerTask.cancel();
timer.cancel(); timer = null;
timerTask = null;
}
} private Timer timer = null;
private TimerTask timerTask = null; }

最新文章

  1. 项目分析_xxoo-master
  2. 7 款顶级开源 BI(商务智能)软件和报表工具
  3. 转-阿里云CentOS Linux服务器上用postfix搭建邮件服务器
  4. C#设计模式-单例模式
  5. html5学习笔记(2)
  6. node.js处理post请求
  7. JSP学习笔记 - 源码 -- JSP Custom Tags -- JSP自定义标记
  8. hdoj 1028 Ignatius and the Princess III(区间dp)
  9. MySQL两个最简单的delimiter的使用demo
  10. iOS开发之Xcode常用调试技巧总结
  11. 2、搭建一个简单的Web项目
  12. 51nod 1617 奇偶数组
  13. failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected 排坑指南
  14. java并发编程概念
  15. sql字符串累加
  16. 金融量化分析【day113】:羊驼策略
  17. VSFTPD虚拟用户配置
  18. Javascript-闰年javascript的判断
  19. yaml 文件保存
  20. Prim算法和Kruskal算法求最小生成树

热门文章

  1. model基础操作(上)
  2. ThreadLocal原理大解析
  3. linux 查看和设置主机名
  4. 使用 Iceberg on Kubernetes 打造新一代云原生数据湖
  5. NOIP 2013 P1967 货车运输
  6. Hadoop调优 | NameNode主备宕机引发的思考
  7. Mybatis的缓存——一级缓存和源码分析
  8. PS中抠图的四种方法介绍
  9. Windows自带MD5 SHA1 SHA256命令行工具
  10. 通过JS判断当前浏览器的类型