在Activity中设置两个按钮,分别为启动和关闭Service:

bt01.setOnClickListener(new Button.OnClickListener() {

@Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent i = new Intent(mainActivity.this, MyService.class);
                startService(i);
                Toast.makeText(mainActivity.this, "Service启动成功",
                        Toast.LENGTH_LONG).show();
            }
        });
        bt02.setOnClickListener(new Button.OnClickListener() {

@Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent i = new Intent(mainActivity.this, MyService.class);
                stopService(i);
                Toast.makeText(mainActivity.this, "Service启动成功",
                        Toast.LENGTH_LONG).show();
            }
        });

添加MyService.java

public class MyService extends Service {
    MyThread myThread;

@Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

@Override
    public void onStart(Intent intent, int startId) {//启动Service
        // TODO Auto-generated method stub
        myThread = new MyThread();
        myThread.start();
        super.onStart(intent, startId);
    }

@Override
    public void onDestroy() {//关闭Service
        // TODO Auto-generated method stub
        myThread.flag = false;
        super.onDestroy();
    }

class MyThread extends Thread {
        boolean flag = true;
        int c = 0;

public void run() {
            while (flag) {
               Intent i = new Intent("com.sunny.myThread");
                i.putExtra("myThread", c);
                sendBroadcast(i);//发送广播,在mainActivity中进行捕获,更新数据
                c++;
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

}

mainActivity中,添加广播接收器,过滤接收来自action为com.sunny.myThread的广播:

IntentFilter intentFilter = new IntentFilter("com.sunny.myThread");
        MyBroadcastReceiver myBroadcastReceiver = new MyBroadcastReceiver();
        registerReceiver(myBroadcastReceiverintentFilter);//注册广播接收器

其中:

class MyBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            Bundle myBundle = intent.getExtras();
            int myInt = myBundle.getInt("myThread");
                 tv01.setText("后台Service运行了" + myInt + "秒");
        }

}

android 之 service的更多相关文章

  1. Android服务(Service)研究

    Service是android四大组件之一,没有用户界面,一直在后台运行. 为什么使用Service启动新线程执行耗时任务,而不直接在Activity中启动一个子线程处理? 1.Activity会被用 ...

  2. Android中Service 使用详解(LocalService + RemoteService)

    Service 简介: Service分为本地服务(LocalService)和远程服务(RemoteService): 1.本地服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外L ...

  3. android 入门-Service实时向Activity通过BroadcastReceiver传递数据

    引文: http://www.cnblogs.com/linjiqin/p/3147764.html <RelativeLayout xmlns:android="http://sch ...

  4. android 入门-Service

    sdk 1.7 package com.example.hellowrold; import java.util.Random; import com.example.hellowrold.R.id; ...

  5. Android中Service(服务)详解

    http://blog.csdn.net/ryantang03/article/details/7770939 Android中Service(服务)详解 标签: serviceandroidappl ...

  6. Android中Service的使用

    我个人的理解是:我们平时使用的android系统的app的后台应用,就是这个原理 可以利用Service实现程序在后台运行,依照这个原理,可以通过Service来实现关键代码的运行与实现. <一 ...

  7. 【Android 】Service 全面总结

    1.Service的种类 按运行地点分类: 类别 区别  优点 缺点   应用 本地服务(Local) 该服务依附在主进程上,  服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外L ...

  8. Android Activity/Service/Broadcaster三大组件之间互相调用

    我们研究两个问题,1.Service如何通过Broadcaster更改activity的一个TextView.(研究这个问题,考虑到Service从服务器端获得消息之后,将msg返回给activity ...

  9. Android 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护

    本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context  ↳an ...

  10. Android 利用Service BroadcastReceiver实现小例子

    Activity: package com.example.test; import android.app.Activity; import android.content.Context; imp ...

随机推荐

  1. postman中添加cookie信息

    日常测试中有部分接口请求需要有登录信息,否则调用报错,那如何在postman中添加用户的cookie呢,主要分2个步骤: 第一步: Charles抓包获取Headers信息,拷贝Headers中的Co ...

  2. #82. 【UR #7】水题生成器

    链接:http://uoj.ac/problem/82 今天是世界水日,著名的水题资源专家蝈蝈大臣向世界宣布了他的一项新发明 —— 水题生成器. 每道题目都有一个正整数的难度值.水题生成器虽然强大但是 ...

  3. #118. 【UR #8】赴京赶考

    链接:#118. [UR #8]赴京赶考 高中,高中,短暂的三年.NOI是高中结业考试,而高考在每年暑假举行. 高二暑假,这是你最后一次参加高考的机会.你已经为了高考停课很久了,OI的知识很久没管了. ...

  4. Codeforces 371BB. Fox Dividing Cheese

    Two little greedy bears have found two pieces of cheese in the forest of weight a and b grams, corre ...

  5. vuex2 10分钟快速入门

    因为太简单了,我直接就贴代码了~ #建立store.js import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex) export de ...

  6. pay-spring-boot 开箱即用的Java支付模块,整合支付宝支付、微信支付

    关于 使用本模块,可轻松实现支付宝支付.微信支付对接,从而专注于业务,无需关心第三方逻辑. 模块完全独立,无支付宝.微信SDK依赖. 基于Spring Boot. 依赖Redis. 我能做什么 支付宝 ...

  7. uvm_globals——告诉这个世界我爱你

    uvm_globals.svh 存放全局的变量和方法.当UVM平台启动时,便在uvm_globals查找相应的方法,uvm_globals 的方法实现也比较简单,就是调用uvm_root对应的方法.其 ...

  8. iOS Block的本质(二)

    iOS Block的本质(二) 1. 介绍引入block本质 通过上一篇文章Block的本质(一)已经基本对block的底层结构有了基本的认识,block的底层就是__main_block_impl_ ...

  9. POJ 2831 Can We Build This One?

    Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 1728   Accepted: 643 Case Time Limit: 2 ...

  10. iOS上架问题解决

    dns问题 http://iphone.91.com/tutorial/syjc/140509/21686339.html 网络问题 手机4g开wifi,上传提交多次 时间问题 东八区下午6点上架成功 ...