安卓服务(Service)的两种开启方式以及服务的生命周期

安卓中服务的开启方式

一:采用start的方式开启服务

调用函数:startService(Intent)->onCreate()->onStart()/onStartCommand()->onDestroy() 特点:服务被开启后不会重复开启,,只会调用onStart(),服务只会被停止一次。 二:采用bind的方式开发服务 调用函数:bindService(Intent…)->onCreate()->onBind()->onUnBind()->onDestroy(); 特点:绑定不会调用onStart()[过时了]和onStartCommand()方法。

两种服务的区别: start方式开发服务,一旦服务开启跟调用者就没有任何关系了,比如我们的服务是在Activity中调用开启的,当Activity关闭的时候,服务不会关闭。 bind方式开启服务,调用者没了,服务也会关闭,可以理解为同生共死。

对于start开启服务的方式比较简单,重点讲解bind的方式!

例子: 1.布局里面设置三个按钮

2.为按钮设置监听事件,有好几种方式。 3.处理事件。当点击绑定的时候:

/*绑定的创建方式*/Intent intent = new Intent(this, MyService.class);bindService(intent, conn, BIND_AUTO_CREATE);

conn是自己实现的功能类,继承自ServiceConnection。 完整代码如下:

{private MyConn conn;private Call c;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//Call类似中间人的功能。}(View v){conn = new MyConn();Intent intent = new Intent(this, MyService.class);bindService(intent, conn, BIND_AUTO_CREATE);}(View v){unbindService(conn);c = null;}/** 调用服务里的方法*/(View v){c.callMethodInService();}{(ComponentName name, IBinder service) {System.out.println(“调用服务里面的方法”);c = (Call) service;}(ComponentName name) {}}}

service代码如下:

{@Overridepublic IBinder onBind(Intent intent) {System.out.println(“服务被成功绑定了”);return new Call();}() {System.out.println(“onCreate”);super.onCreate();}(Intent intent, int flags, int startId) {System.out.println(“onstartCommand”);return super.onStartCommand(intent, flags, startId);}() {System.out.println(“ondestroy”);super.onDestroy();}(){Toast.makeText(this, “methodInService”, 0).show();}{(){methodInService();}}}

布局文件:

=========>

停止每日在车水马龙的市井里忙碌的穿梭,

安卓服务(Service)的两种开启方式以及服务的生命周期

相关文章:

你感兴趣的文章:

标签云: