Android Service生命周期及用法(2)

package com.tutor.servicedemo;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class ServiceDemo extends Activity implements OnClickListener{
 
 private MyService  mMyService;
 private TextView mTextView;
 private Button startServiceButton;
 private Button stopServiceButton;
 private Button bindServiceButton;
 private Button unbindServiceButton;
 private Context mContext;
 
 //这里需要用到ServiceConnection在Context.bindService和context.unBindService()里用到
 private ServiceConnection mServiceConnection = new ServiceConnection() {
  //当我bindService时,让TextView显示MyService里getSystemTime()方法的返回值 
  public void onServiceConnected(ComponentName name, IBinder service) {
   // TODO Auto-generated method stub
   mMyService = ((MyService.MyBinder)service).getService();
   mTextView.setText("I am frome Service :" + mMyService.getSystemTime());
  }
 
  public void onServiceDisconnected(ComponentName name) {
   // TODO Auto-generated method stub
   
  }
 };
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setupViews();
    }
   
    public void setupViews(){
   
     mContext = ServiceDemo.this;
     mTextView = (TextView)findViewById(R.id.text);
     
     
     
     startServiceButton = (Button)findViewById(R.id.startservice);
     stopServiceButton = (Button)findViewById(R.id.stopservice);
     bindServiceButton = (Button)findViewById(R.id.bindservice);
     unbindServiceButton = (Button)findViewById(R.id.unbindservice);
     
     startServiceButton.setOnClickListener(this);
     stopServiceButton.setOnClickListener(this);
     bindServiceButton.setOnClickListener(this);
     unbindServiceButton.setOnClickListener(this);
    }
 
 public void onClick(View v) {
  // TODO Auto-generated method stub
  if(v == startServiceButton){
   Intent i  = new Intent();
   i.setClass(ServiceDemo.this, MyService.class);
   mContext.startService(i);
  }else if(v == stopServiceButton){
   Intent i  = new Intent();
   i.setClass(ServiceDemo.this, MyService.class);
   mContext.stopService(i);
  }else if(v == bindServiceButton){
   Intent i  = new Intent();
   i.setClass(ServiceDemo.this, MyService.class);
   mContext.bindService(i, mServiceConnection, BIND_AUTO_CREATE);
  }else{
   mContext.unbindService(mServiceConnection);
  }
 }
 
 
 
}

第五步:修改AndroidManifest.xml代码(将我们新建的MyService注册进去如下代码第14行:)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.tutor.servicedemo"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".ServiceDemo"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  <service android:name=".MyService" android:exported="true"></service>
    </application>
    <uses-sdk android:minSdkVersion="7" />
</manifest>

第六步:执行上述工程,效果图如下:

Android Service生命周期及用法

点击startServie按钮时先后执行了Service中onCreate()->onStart()这两个方法,打开Logcat视窗效果如下图:

Android Service生命周期及用法

我们这时可以按HOME键进入Settings(设置)->Applications(应用)->Running Services(正在运行的服务)看一下我们新启动了一个服务,效果如下:

Android Service生命周期及用法

点击stopService按钮时,Service��执行了onDestroy()方法,效果图如下所示:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d3c6b4c1b5252b688c467e4b460e46a6.html