Service的简单介绍

7人阅读 评论(0) 收藏 举报
分类:
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        stop = (Button) findViewById(R.id.stop);
        start = (Button) findViewById(R.id.start);

        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this , MyService.class);
                startService(intent); //启动服务
            }
        });

        stop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent stopIntent = new Intent(MainActivity.this , MyService.class);
                stopService(stopIntent); //停止服务
            }
        });


    }
public class MyService extends Service {//需要在manifest文件中注册
    //自身调用stopself()也可以停止服务运行

    public MyService() {
    }

    @Override
    public void onCreate() { //第一次服务创建时调用,已经创建了就直接onstartcommand()
        super.onCreate();
        Log.i("mydate" , "oncreate");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) { //服务启动时调用
        Log.i("mydate" , "onstartcommand");
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() { //服务销毁时调用
        Log.i("mydate" , "ondestroy");
        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent intent) {
        /*// TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");*/

        return (new MyBinder()); //具体干嘛,做什么 ,如果没有指定干嘛的话就为空
    }

    class MyBinder extends Binder { //活动指挥服务干嘛,做什么什么,需要这个东西决定具体做什么
        public void startDownload(){
            Log.i("mydate" , "开始下载");
        }
        //...
    }


}
<service
            android:name=".MyService"
            android:enabled="true"
            android:exported="true"></service>

使用onBind()方法

@Override
    public IBinder onBind(Intent intent) {
        /*// TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");*/

        return (new MyBinder()); //具体干嘛,做什么 ,如果没有指定干嘛的话就为空
    }
public class MainActivity extends AppCompatActivity {
    private Button stop;
    private Button start;
    private MyService.MyBinder myBinder; //指挥服务具体干嘛的

    private ServiceConnection connection = new ServiceConnection() { //对开启服务进行包装,使其具体干吗,做什么,什么
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            myBinder = (MyService.MyBinder) service;
            myBinder.startDownload(); //具体调用这个方法
            //...

        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    };

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        stop = (Button) findViewById(R.id.stop);
        start = (Button) findViewById(R.id.start);

        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this , MyService.class);
                bindService(intent , connection , BIND_AUTO_CREATE); //绑定服务 指定binder 已经开启了服务,则不在执行这个语句
            }
        });

        stop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent stopIntent = new Intent(MainActivity.this , MyService.class);
                unbindService(connection); //解绑服务
            }
        });


    }

}



查看评论

Web Service入门简介(一个简单的WebService示例)

一、Web Service简介 1.1、Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intra...
  • zhongguomao
  • zhongguomao
  • 2017年04月28日 16:16
  • 1205

项目简单介绍

项目背景介绍:   大数据管理系统,主要对开源hadoop大数据组件(后续加入了自研组件,包括odpp,统一sql,vmax等)管理,包括集群安装,卸载,启动停止,状态监控,指标监控,容灾备份,告...
  • jsyxcjw
  • jsyxcjw
  • 2016年08月03日 22:04
  • 867

Hibernate简单介绍

. Hibernate介绍:      Hibernate是一个开源的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从...
  • clypm
  • clypm
  • 2014年03月20日 11:07
  • 1706

Spring学习笔记一(Spring简单介绍)

1.前言 从今天起开始写几篇关于Spring的文章,来总结一下,近来的学习情况,也想与大家分享一下学习Spring的心得和体会。希望大家能够多多指正。  2.Spring简单介绍 上...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2015年08月09日 22:00
  • 1742

SpringMVC简单介绍

首先,大家只要理解了MVC。其实所有的MVC 框架都是大同小异的。 无非是用户页面通过HttpServletRequest向后台传值。框架的配置文件会通过Request中的URL格式和参数找到相对应...
  • wangjuan_01
  • wangjuan_01
  • 2015年11月04日 12:47
  • 395

JVM简单介绍

JVM模型结构 图: 程序计数器(PC): 当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 场景:分支、循环、跳转、异常处理、线...
  • chun16free
  • chun16free
  • 2016年04月15日 14:07
  • 412

对微信的简单介绍

仅仅目前而来,微信里面有订阅号,服务号,企业号还有最近刚出来的小程序。下面主要说服务号和订阅号。   服务号的功能 公众平台服务号,是公众平台的一种帐号类型,旨在为用户提供服务。如:招商银行、中国南方...
  • qq_34543438
  • qq_34543438
  • 2017年05月30日 23:02
  • 448

Java简单介绍

Java的三个版本:        Java SE:标准版,各应用平台的基础        Java EE:企业版,以企业为环境而开发应用程序的解决方案        Java ME:微型版,致力于消...
  • elibrace
  • elibrace
  • 2016年01月27日 08:42
  • 3244

关于Spring简单的介绍

Spring概述 一,什么是spring? 1.      Spring是最受欢迎的企业级JAVA应用程序开发框架。 2.      Spring是一个开源的JAVA平台,2003年6月首次在Apac...
  • qq_34342083
  • qq_34342083
  • 2016年12月14日 21:36
  • 424

简单介绍 dubbo

Dubbo是一个开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合;从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消...
  • u014266877
  • u014266877
  • 2017年01月19日 09:45
  • 442
    个人资料
    持之以恒
    等级:
    访问量: 955
    积分: 583
    排名: 8万+
    文章存档
    最新评论