Android -- Service的使用

Service正如其名服务,我们之前了解过Activity表示的是一个页面,但是如果我们某些操作,不需要展示页面,值需要进行后台的一个操作,这时候我们可以创建一个Service,一般进行socket通信、http请求等操作。

1、我们创建一个Android的工程

2、增加一个Service,代码如下

package com.example.learnservice;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class MyService extends Service {

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

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        new Thread() {
            @Override
            public void run() {
                super.run();
                //while (true) {
                    System.out.println("后台运行...");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                //}
            }
        }.start();

        return super.onStartCommand(intent, flags, startId);
    }

}

继承Service并且重写onStartCommand,此方法在启用此Service的时候执行。

3、我们在空的activity页面增加2个按钮,分别为启动和停止Service的操作,代码如下

package com.example.learnservice;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {
    private Intent intent;

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

        intent = new Intent(MainActivity.this, MyService.class);

        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                startService(intent);
            }
        });

        findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                System.out.println("关闭后台服务....");
                stopService(intent);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

通过startService和stopService操作。

4、我们看下Android的后台运行进程,如图

5、我们先点击启动Service按钮,再查看后台进程

看到了吗,这个是我启动的Service,它在后台被启动起来啦 。

6、我们调用stopService方法停止Service,如图

时间: 2024-11-02 09:14:10

Android -- Service的使用的相关文章

Android Service完全解析,关于服务你所需知道的一切(下) (转载)

转自:http://blog.csdn.net/guolin_blog/article/details/9797169 转载请注册出处:http://blog.csdn.net/guolin_blog/article/details/9797169 在 上一篇文章中,我们学习了Android Service相关的许多重要内容,包括Service的基本用法.Service和Activity进行通信.Service的销毁方式. Service与Thread的关系.以及如何创建前台Service.以上

Android Service完全解析,关于服务你所需知道的一切(上)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11952435 相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了.Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色.它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务.必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持

Android Service完全解析,关于服务你所需知道的一切(下)

转载请注册出处:http://blog.csdn.net/guolin_blog/article/details/9797169 在上一篇文章中,我们学习了Android Service相关的许多重要内容,包括Service的基本用法.Service和Activity进行通信.Service的销毁方式.Service与Thread的关系.以及如何创建前台Service.以上所提到的这些知识点,基本上涵盖了大部分日常开发工作当中可能使用到的Service技术.不过关于Service其实还有一个更加

Android Service演义

摘要: 本文基于Android 5.1代码,介绍了Android Service的运作机理.按理说,网上此类文章已经很多了,本不需我再赘述.但每个人理解技术的方式多少会有所不同,我多写一篇自己理解的service,也未尝不可吧. (本文以Android 5.1为准) 侯亮 1.概述 在Android平台上,那种持续性工作一般都是由service来执行的.不少初学者总是搞不清service和线程.进程之间的关系,这当然会影响到他们开展具体的开发工作. 其实,简单说起来,service和线程.进程是

浅谈 Android Service

 浅谈Android Service的基本用法: 关于Service最基本的用法自然是启动和停止操作. 启动Service有两种方式: 1.通过startService(Intent intent)方式启动,启动时会自动执行onCreate(),onStartCommand()方法. 2.通过bindService(Intent intent,ServiceConnection connection,int flag) 第一个参数是一个Intent对象,第二个参数是连接Service的实例,

Android -- Service绑定解绑和aidl

Service是安卓四大组件之一,先前讲到了Service的生命周期,以及非绑定类型的生命周期的例子,这次来分享一下绑定形式的. 应用组件(客户端)可以调用bindService()绑定到一个service.Android系统之后调用service的onBind()方法,它返回一个用来与service交互的IBinder. 绑定是异步的,bindService()会立即返回,它不会返回IBinder给客户端.要接收IBinder,客户端必须创建一个ServiceConnection的实例并传给b

Android Service组件在新进程绑定(bindService)过程

1.首先看两个例子 (1)进程内 Client端 public class CounterService extends Service implements ICounterService { ...... public class CounterBinder extends Binder { public CounterService getService() { return CounterService.this; } } ...... } Server端 public class Ma

Android Service(上)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11952435 相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了.Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色.它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务.必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持

Android Service组件在进程内绑定(bindService)过程

本文参考Android应用程序绑定服务(bindService)的过程源代码分析http://blog.csdn.net/luoshengyang/article/details/6745181和<Android系统源代码情景分析>,作者罗升阳 一.Android Service组件在进程内绑定(bindService)过程 0.总图流程图如下: 1.Counter和CounterService所在应用程序主线程向ActivityManagerService进程发送BIND_SERVICE_T

Android:Service的非绑定式的创建和生命周期

Android的Service若使用非绑定式的创建,则创建后将无法再与它取得联系,即无法传递消息参数等: 所以如果希望创建后仍然与其存在联系,那么可以参考我的前几篇博客<Android:Service的绑定和解绑定,Service与Activity通信>,其中讲到了Service的绑定和与Activity通信的相关内容(如题目o(^▽^)o). Service的非绑定式的创建非常的简单,和启动Activity差不多. 只需要调用startService()即可创建:而调用stopSercice