zoukankan      html  css  js  c++  java
  • Android四大组件之Service

    服务(Service) 是一种在后台运行,没有界面的组件,由其他组件调用开始。Android 中的服务和 Windows 中的服务是类似的东西,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。

    服务(Service)的实现

    1. 定义一个类EchoService并继承自Service,重写 onCreate()、 onStart(Intent intent, int startId)、 onBind(Intent intent)、 onUnbind(Intent intent)、onDestroy() 中需要的方法。

     1 package hx.cn.usingservice;
     2 
     3 import android.app.Service;
     4 import android.content.Intent;
     5 import android.os.IBinder;
     6 
     7 /**
     8  * Created by YQ on 2015/11/3.
     9  */
    10 public class EchoService extends Service {
    11     @Override
    12     public IBinder onBind(Intent intent) {
    13         return null;
    14     }
    15 
    16     @Override
    17     public void onCreate() {
    18         super.onCreate();
    19         System.out.println("oncreat()");
    20     }
    21 
    22     @Override
    23     public void onDestroy() {
    24         super.onDestroy();
    25         System.out.println("ondestory()");
    26     }
    27 }

    2. 在清单文件的 <application> 节点下声明 <service>。

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     3     package="hx.cn.usingservice" >
     4 
     5     <application
     6         android:allowBackup="true"
     7         android:icon="@mipmap/ic_launcher"
     8         android:label="@string/app_name"
     9         android:theme="@style/AppTheme" >
    10         <activity
    11             android:name=".MainActivity"
    12             android:label="@string/app_name" >
    13             <intent-filter>
    14                 <action android:name="android.intent.action.MAIN" />
    15 
    16                 <category android:name="android.intent.category.LAUNCHER" />
    17             </intent-filter>
    18         </activity>
    19         <service android:name=".EchoService"></service>
    20     </application>
    21 
    22 </manifest>

    注:服务不能自己运行,需要通过调 用 Context.startService() 或 Context.bindService() 方法启动服务。这两个方法都可以启动 Service,但是它们的使用场合有所不同。使用 startService() 方法启用服务,访问者与服务之间没有关联,即使访问者退出了,服务仍然运行。使用 bindService() 方法启用服务,访问者与服务绑定在了一起,访问者一旦退出,服务也就终止。采用 Context.startService() 方法启动服务,只能调用 Context.stopService() 方法结束服务,服务结束时会调用 onDestroy() 方法。

    3.以下是MainActivity中实现的主要代码:

     1 private Button btn_StartService,btn_StopService;
     2     private Intent IntentService;
     3     @Override
     4     protected void onCreate(Bundle savedInstanceState) {
     5         super.onCreate(savedInstanceState);
     6         setContentView(R.layout.activity_main);
     7 
     8         IntentService=new Intent(this,EchoService.class);
     9 
    10         btn_StartService=(Button)findViewById(R.id.btn_StartService);
    11         btn_StopService=(Button)findViewById(R.id.btn_StopService);
    12 
    13         btn_StartService.setOnClickListener(this);
    14         btn_StopService.setOnClickListener(this);
    15     }
    16 
    17 
    18 
    19 
    20 
    21 
    22 
    23 @Override
    24     public void onClick(View view) {
    25         switch (view.getId()){
    26             case R.id.btn_StartService:
    27                 startService(IntentService);
    28                 break;
    29             case R.id.btn_StopService:
    30                 stopService(IntentService);
    31                 break;
    32         }
  • 相关阅读:
    LinkedHashMap、HashMap和TreeMap的比较使用
    RocketMQ之Namesrv
    mysql创建、删除、查看索引
    java8 JVM堆内存(heap) 新生代 老年代 元空间垃圾回收详解
    Java中GCRoots包括哪些
    单例模式双重校验锁
    内存屏障
    LockSupport的用法及原理
    HashSet,TreeSet和LinkedHashSet的区别
    Windows常用网络命令技巧汇总
  • 原文地址:https://www.cnblogs.com/yunqing/p/4934556.html
Copyright © 2011-2022 走看看