Android Service服务的生命周期

来源:互联网 发布:大学生怎么做淘宝店铺 编辑:程序博客网 时间:2024/05/16 14:47

与activity类似,服务也存在生命周期回调方法,你可以实现这些方法来监控服务的状态变化,并在适当的时机执行一些操作。 以下代码提纲展示了服务的每个生命周期回调方法: 

public class ExampleService extends Service {    int mStartMode;       // 标识服务被杀死后的处理方式    IBinder mBinder;      // 用于客户端绑定的接口    boolean mAllowRebind; // 标识是否使用onRebind    @Override    public void onCreate() {        // 服务正被创建    }    @Override    public int onStartCommand(Intent intent, int flags, int startId) {        // 服务正在启动,由startService()调用引发        return mStartMode;    }    @Override    public IBinder onBind(Intent intent) {        // 客户端用bindService()绑定服务        return mBinder;    }    @Override    public boolean onUnbind(Intent intent) {        // 所有的客户端都用unbindService()解除了绑定        return mAllowRebind;    }    @Override    public void onRebind(Intent intent) {        // 某客户端正用bindService()绑定到服务,        // 而onUnbind()已经被调用过了    }    @Override    public void onDestroy() {        // 服务用不上了,将被销毁    }}

代码实例:

  LocalService.java

package com.app.servicetest;import android.app.Service;import android.content.Intent;import android.os.Handler;import android.os.IBinder;import android.os.Message;import android.util.Log;import android.widget.Toast;public class LocalService extends Service { boolean flag = true;int count=0; @Override//创建一个服务 继承自Service  重写 onBind方法public IBinder onBind(Intent arg0) { //  不支持绑定,所以返回nullreturn null;} //创建HanderHandler handler = new Handler(){public void handleMessage(android.os.Message msg) {Toast.makeText(LocalService.this, count+"", Toast.LENGTH_SHORT).show();};};@Overridepublic void onCreate() {super.onCreate();  new Thread(new Runnable() {@Overridepublic void run() {while(flag){  try { Log.d("--------------", count+" ");    Message msg = new Message(); handler.sendMessage(msg); count++;  Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace();}} }}).start() ; }@Overridepublic void onDestroy() {Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show(); flag = false;super.onDestroy();}}
MainActivity.java

package com.app.servicetest;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity {Intent intent ;Button button_start,button_stop;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);button_start =   (Button) findViewById(R.id.button1);button_stop =  (Button) findViewById(R.id.button2);button_start.setText("创建服务");button_stop.setText("Stop"); button_start.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {intent = new Intent(MainActivity.this, LocalService.class); //启动服务startService(intent);Toast.makeText(MainActivity.this, "启动", 0).show();}});button_stop.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) { //停止 服务stopService(intent);Toast.makeText(MainActivity.this, "Stop", 0).show();} });} }