Android Service简单使用实战一把(一)

Android Service不解释,我一直信奉代码是最好的教材。至于入门概念还是得看看书或上网搜搜。

这个周末有点小累,加上珠海今天天气不给力,说好的晚上露营泡汤了,说好的今天横琴岛骑行也没去,那就宅着看看网络博客吧,实在不知道干啥。期待明天好天气啊,好骑行去斗门看油菜花(PS:俺的家乡油菜花海比这有名“中国最美油菜花海节”)。

先来个不和Activity交互的Service入个门吧:

MainActivity.java

package com.jesse.servicetest1;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.app.Activity;
import android.content.Intent;
/**
 * @author Jesse
 * Android Service learn test No:1.
 */
public class MainActivity extends Activity {
	private Button mStartBtn;
	private Button mStopBtn;
	private static final String INTENT_ACTION = "com.jesse.test.service";
	/*
	 *  对于这类不需和Activity交互的本地服务,是使用startService/stopService的最好例子。
	 *  运行时可以发现第一次startService时,会调用onCreate和onStart,在没有stopService
	 *  前,无论点击多少次startService,都只会调用onStart。而stopService时调用onDestroy。
	 *  再次点击stopService,会发现不会进入service的生命周期的,即不会再调用onCreate,
	 *  onStart和onDestroy。而onBind在startService/stopService中没有调用。
	 * */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		mStartBtn = (Button) this.findViewById(R.id.start);
		mStopBtn = (Button) this.findViewById(R.id.stop);
		
		mStartBtn.setOnClickListener(startClickListener);
		mStopBtn.setOnClickListener(stopClickListener);
	}
	
	OnClickListener startClickListener = new OnClickListener() {
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			startService(new Intent(INTENT_ACTION));
		}
	};
	
	OnClickListener stopClickListener = new OnClickListener() {
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			stopService(new Intent(INTENT_ACTION));
		}
	};
}

LocalTestService.java

package com.jesse.servicetest1;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class LocalTestService extends Service {
	private static final String TAG = "LocalTestService";
	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		Log.i(TAG, "LocalTestService--------onBind");
		return null;
	}

	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		Log.i(TAG, "LocalTestService--------onCreate");
		super.onCreate();
	}
	
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		Log.i(TAG, "LocalTestService--------onDestroy");
		super.onDestroy();
	}
	
	@Override
	public void onRebind(Intent intent) {
		// TODO Auto-generated method stub
		Log.i(TAG, "LocalTestService--------onRebind");
		super.onRebind(intent);
	}
	
	@Override
	public void onStart(Intent intent, int startId) {
		// TODO Auto-generated method stub
		Log.i(TAG, "LocalTestService--------onStart");
		super.onStart(intent, startId);
	}
	
	@Override
	public boolean onUnbind(Intent intent) {
		// TODO Auto-generated method stub
		Log.i(TAG, "LocalTestService--------onUnbind");
		return super.onUnbind(intent);
	}
}

AndroidMainifset.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jesse.servicetest1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="17"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.jesse.servicetest1.MainActivity"
            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=".LocalTestService">
            <intent-filter>
                <action android:name="com.jesse.test.service" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </service>
        
    </application>

</manifest>

至于这个实战的运行结果打开LogCat你就能看见上边注释说的效果,也就说明了最简单Service调运过程。不过Service的生命周期和两种启动方式你还是要继续关注的,这个实战有且仅是一个Service的体验,也即感性认识下而已。

PS:下一篇 Android Service简单使用实战一把(二) 继续理性认识Service下。

Android Service简单使用实战一把(一),,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。