Android Service控件用法实例分析

所属分类: 软件编程 / Android 阅读数: 264
收藏 0 赞 0 分享

本文实例讲述了Android Service控件用法。分享给大家供大家参考,具体如下:

1、Service是一个应用程序的组件
2、Service没有图形化界面
3、用来处理耗时比较长的功能(下载、播放MP3)
4、更新ContentProvider、Intent以及系统的启动

Servcie不是一个单独的进程,不是一个线程

定义一个Service比较简单,只要继承Service类,实现其生命周期的方法即可。一个定义好的Service必须在AndroidManifest.xml文件中通过<service>声明才能使用

<service android:name="MyService">
  <intent-filter>
    <action android:name="hb.com.MYSERVICE"/>
  </intent-filter>
</service>

备注:MyService一定要是继承了Service类的,并且名称和类名是一致的

action的名称是自定义的,只要在bindService或者操作Intent的时候就能够被捕获

public class MyService extends Service {
  public class MyBinder extends Binder{
    public MyService getMyService(){
      return MyService.this;
    }
  }
  public void test(){
    System.out.println("test");
  }
  @Override
  public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    System.out.println("onBind");
    return new MyBinder();
  }
  @Override
  public void onCreate() {
    // TODO Auto-generated method stub
    System.out.println("onCreate");
    super.onCreate();
  }
  @Override
  public boolean onUnbind(Intent intent) {
    System.out.println("I am unbind");
    return super.onUnbind(intent);
  }
}

public class MainActivity extends Activity {
  private static final String MYSERVICE = "hb.com.MYSERVICE";
  private boolean flag = false;
  //bindService()方法需要ServiceConnection接口作为参数,所以定义了这个变量,目的是为了实现里面的两个方法
  ServiceConnection conn = new ServiceConnection() {
    @Override
    public void onServiceDisconnected(ComponentName name) {
      System.out.println("onServiceDisconnected");
    }
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
      System.out.println("onServiceConnected");
      MyBinder myBinder = (MyBinder)service;
      MyService myService = myBinder.getMyService();
      myService.test();
    }
  };
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    findViewById(R.id.start).setOnClickListener(new Button.OnClickListener(){
      @Override
      public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction(MYSERVICE);
        //先调用MyService的onCreate()方法,然后调用onBind()方法,最后调用onServiceConnected()方法
        //因此IBinder返回的值就是通过onBind()方法返回的对象,定义getMyService()方法是为了得到MyService对象,用户在这个类中添加自己需要的一些方法,这样可以做一些逻辑处理
        bindService(intent, conn, Service.BIND_AUTO_CREATE);
        flag = true;
      }
    });
    findViewById(R.id.stop).setOnClickListener(new Button.OnClickListener(){
      @Override
      public void onClick(View v) {
        if(flag){
          //取消绑定事件,会调用MyService的onUnbind()方法,但是不会调用onServiceDisconnected()这个方法,原因不明
          unbindService(conn);
          flag = false;
        }
      }
    });
  }
}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结

希望本文所述对大家Android程序设计有所帮助。

更多精彩内容其他人还在看

Android样式和主题之选择器的实例讲解

今天小编就为大家分享一篇关于Android样式和主题之选择器的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Android应用动态修改主题的方法示例

今天小编就为大家分享一篇关于Android应用动态修改主题的方法示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter 网络请求框架封装详解

这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Flutter倒计时/计时器的实现代码

这篇文章主要介绍了Flutter倒计时/计时器的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android使用google breakpad捕获分析native cash

这篇文章主要介绍了Android使用google breakpad捕获分析native cash 的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Flutter WebView与JS互相调用简易指南

这篇文章主要介绍了详解Flutter WebView与JS互相调用简易指南,分为JS调用Flutter和Flutter调用JS,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android开发实现ListView和adapter配合显示图片和文字列表功能示例

这篇文章主要介绍了Android开发实现ListView和adapter配合显示图片和文字列表功能,涉及Android使用ListView结合adapter适配器实现图文显示功能相关的布局、解析、权限控制等操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Android文字基线Baseline算法的使用讲解

今天小编就为大家分享一篇关于Android文字基线Baseline算法的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter自定义实现神奇动效的卡片切换视图的示例代码

这篇文章主要介绍了Flutter自定义实现神奇动效的卡片切换视图的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android实现自定义滑动刻度尺方法示例

这篇文章主要给大家介绍了关于Android实现自定义滑动刻度尺的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多