zoukankan      html  css  js  c++  java
  • Android 中Service组件

      Serivce组件:

    首先要继承于Serivce,实现其生命周期中的方法,然后还需要在AndroidMainfest.xml<service>声明才能使用

    可以调用startService来启动一个服务,或者使用bindService来绑定一个已经存在的服务,还可以通过RPC(远程进程调用)机制来实现不同进程之间Service的调用。

    生命周期 onBind,是一个必须实现的方法,返回一个绑定接口给service

    onCreate:Service第一次被创建时,由系统调用。

    onStart(),当通过startService()方法启动serivce时,该方法调用

    onDestorySerivce不再使用时,系统调用该方法

     

    要使用一个Service需要在AndroidMainfest.xml文件<service>声明serivce,<service>元素中添加<intent-filter>指定如何访问该Service.

     

     

    注意:调用startService 的生命周期是这样的onCreate-----------à onStart

    调用bindService 的生命周期是这样的onCreate-----------à onBind

    package com.king.android.controls;
      2 
      3 import android.app.Service;
      4 import android.content.Intent;
      5 import android.os.IBinder;
      6 import android.widget.Toast;
      7 
      8 /**
      9 
     10  * 描述:第一个服务实例演示
     11  * 作者:Andy.Liu
     12  * 时间: 2012-7-18  上午07:21:48
     13  **/
     14 public class FirstService extends Service {
     15     
     16     private static final String MY_SERVICE = "com.king.android.controls.my_service";//服务指定的动作
     17 
     18     @Override
     19     public IBinder onBind(Intent arg0) {
     20         
     21         Toast.makeText(FirstService.this, "onBind.............", Toast.LENGTH_LONG).show();
     22         return null;
     23     }
     24     @Override
     25     public void onCreate() {
     26         Toast.makeText(FirstService.this, "onCreate...........", Toast.LENGTH_LONG).show();
     27         super.onCreate();
     28     }
     29     
     30     @Override
     31     public void onStart(Intent intent, int startId) {
     32         Toast.makeText(FirstService.this, "onStart.............", Toast.LENGTH_LONG).show();
     33         super.onStart(intent, startId);
     34     }
     35     
     36     @Override
     37     public void onDestroy() {
     38         Toast.makeText(FirstService.this, "OnDestory............", Toast.LENGTH_LONG).show();
     39         super.onDestroy();
     40     }
     41 
     42 }
     43 
     44 
     45 
     46 
     47 
     48 package com.king.android.controls;
     49 
     50 import android.app.Activity;
     51 import android.app.Service;
     52 import android.content.ComponentName;
     53 import android.content.Intent;
     54 import android.content.ServiceConnection;
     55 import android.os.Bundle;
     56 import android.os.IBinder;
     57 import android.view.View;
     58 import android.view.View.OnClickListener;
     59 import android.widget.Button;
     60 import android.widget.Toast;
     61 
     62 import com.king.android.R;
     63 
     64 /**
     65 
     66  * 描述:演示Service的Activity
     67  * 作者:Andy.Liu
     68  * 时间: 2012-7-18  上午07:27:19
     69  **/
     70 public class ServiceActivity extends Activity implements OnClickListener{
     71     private static final String MY_SERVICE = "com.king.android.controls.my_service";//服务指定的动作
     72     @Override
     73     protected void onCreate(Bundle savedInstanceState) {
     74         super.onCreate(savedInstanceState);
     75         initView();
     76     }
     77     
     78     private void initView(){
     79         setContentView(R.layout.show_service_layout);
     80         Button btnSerivce = (Button) findViewById(R.id.btn_start);
     81         btnSerivce.setOnClickListener(this);
     82         btnSerivce = (Button) findViewById(R.id.btn_stop);
     83         btnSerivce.setOnClickListener(this);
     84         btnSerivce = (Button) findViewById(R.id.btn_bind);
     85         btnSerivce.setOnClickListener(this);
     86         btnSerivce = (Button) findViewById(R.id.btn_unBind);
     87         btnSerivce.setOnClickListener(this);
     88     }
     89 
     90     @Override
     91     public void onClick(View v) {
     92         Intent intent = null;
     93         switch(v.getId()){
     94         case R.id.btn_start:
     95             intent = new Intent();
     96             intent.setAction(MY_SERVICE);
     97             startService(intent);
     98             break;
     99         case R.id.btn_stop:
    100             intent = new Intent();
    101             intent.setAction(MY_SERVICE);
    102             stopService(intent);
    103             break;
    104         case R.id.btn_bind:
    105             intent = new Intent();
    106             intent.setAction(MY_SERVICE);
    107             bindService(intent, conn, Service.BIND_AUTO_CREATE);
    108             break;
    109         case R.id.btn_unBind:
    110             intent = new Intent();
    111             intent.setAction(MY_SERVICE);
    112             unbindService(conn);
    113             break;
    114         }
    115     }
    116     
    117     private ServiceConnection conn = new ServiceConnection() {
    118         
    119         @Override
    120         public void onServiceDisconnected(ComponentName name) {
    121             Toast.makeText(ServiceActivity.this, "连接成功", Toast.LENGTH_LONG).show();
    122         }
    123         
    124         @Override
    125         public void onServiceConnected(ComponentName name, IBinder service) {
    126             Toast.makeText(ServiceActivity.this, "断开连接", Toast.LENGTH_LONG).show();
    127         }
    128     };
    129 
    130 }

  • 相关阅读:
    vue的组件名称问题
    vue引入js文件时报This dependency was not found:错误
    vue中input输入第一个字符时,光标会消失,需要再次点击才能输入
    vue中url带有#号键,去除方法
    vue路由机制导致的坑,坑,坑
    Python文件读取和数据处理
    python面向对象
    Python PIL库学习笔记
    汉诺塔的python 动画演示
    十九大报告词频分析
  • 原文地址:https://www.cnblogs.com/liuzenglong/p/2596724.html
Copyright © 2011-2022 走看看