`
Bauble
  • 浏览: 67480 次
  • 性别: Icon_minigender_1
  • 来自: Mercury
社区版块
存档分类
最新评论

Android24_Service初步

阅读更多

 

一、Service概念

       1.Service是一个应用程序组件

       2.Service没有图像化界面

       3.Service通常用来处理一些好事比较长的操作

       4.可以使用Service更新ContentProvider,发送Intent以及启动系统的通知等。

ServiceAndroid中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行。

 

二、Service不是什么

       Service不是一个单独的进程,Service不是一个线程。和应用程序是在同一个进程中。

 

三、Service生命周期

Android Service的生命周期并不像Android中Activity那么复杂,因为它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法。

 

四、启动和停止Service的方法

例子程序:


 

TestService.java

 

package com.android.service;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class TestService extends Service {
	@Override
	public IBinder onBind(Intent arg0) {
		System.out.println("TestService --> onBind");
		return null;
	}
	@Override
	public void onCreate() {
		System.out.println("TestService --> onCreate");
		super.onCreate();
	}
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		System.out.println("TestService --> onStartCommand");
		return super.onStartCommand(intent, flags, startId);
	}
	@Override
	public void onDestroy() {
		System.out.println("TestService --> onDestroy");
		super.onDestroy();
	}
	@Override
	public boolean onUnbind(Intent intent) {
		System.out.println("TestService --> onUnbind");
		return super.onUnbind(intent);
	}
}

 ServiceActivity.java

 

package com.android.activity;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.content.ServiceConnection; 
import com.android.service.TestService;
public class ServiceActivity extends Activity {
	private Button startService = null;
	private Button stopService = null;
	private Button bindService = null;
	private Button unbindService = null;
	private MyServiceConnection myServiceConnection = new MyServiceConnection();;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        startService = (Button)findViewById(R.id.startService);
        stopService = (Button)findViewById(R.id.stopService);
        bindService = (Button)findViewById(R.id.bindService);
        unbindService = (Button)findViewById(R.id.unbindService);
        startService.setOnClickListener(new StartServiceListener());
        stopService.setOnClickListener(new StopServiceListener());
        bindService.setOnClickListener(new BindServiceListener());
        unbindService.setOnClickListener(new UnbindServiceListener());
    }
	class StartServiceListener implements OnClickListener{
		public void onClick(View v) {
			Intent intent = new Intent();
			intent.setClass(ServiceActivity.this, TestService.class);
			startService(intent);
		}
	}
	class StopServiceListener implements OnClickListener{
		public void onClick(View v) {
			Intent intent = new Intent();
			intent.setClass(ServiceActivity.this, TestService.class);
			stopService(intent);
		}
	}
	class BindServiceListener implements OnClickListener{
		public void onClick(View v) {
			Intent intent = new Intent();
			intent.setClass(ServiceActivity.this, TestService.class);
			bindService(intent, myServiceConnection, BIND_AUTO_CREATE);
		}
	}
	class UnbindServiceListener implements OnClickListener{
		public void onClick(View v) {
			unbindService(myServiceConnection);
		}
	}
	//这里需要用到ServiceConnection在Context.bindService和
	//context.unBindService()里用到 
	class MyServiceConnection implements ServiceConnection{
		public void onServiceConnected(ComponentName name, IBinder service) {
			System.out.println("ServiceActivity --> onServiceConnected");
		}
		public void onServiceDisconnected(ComponentName name) {
			System.out.println("ServiceActivity --> onServiceDisconnected");
		}
	}
}

 AndroidManifest.java

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.android.activity"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="10" />
<application android:icon="@drawable/icon"  android:label="@string/app_name">
        <activity android:name=".ServiceActivity"
                  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="com.android.service.TestService" android:exported="true"></service>
    </application>
</manifest>

 

运行结果:


点击启动服务按钮:


此时可以在Setting/Application/Running Services里面查看我们的服务。


 

 依次点击绑定服务、取消绑定服务、停止服务按钮:


  • 大小: 8.8 KB
  • 大小: 31.8 KB
  • 大小: 11.2 KB
  • 大小: 42.8 KB
  • 大小: 14.5 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics