首页 > 系统 > Android > 正文

Android Service控件用法实例分析

2019-12-12 06:09:45
字体:
来源:转载
供稿:网友

本文实例讲述了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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表