Android Service简介(系列1)



Android Service简介(系列1)

Android Service是Android重要的组件,在开发中会有用到和涉及。本文先给出一个最简单的Android Service例子。
(第1步)写一个类继承自Service,假设这个类的名字叫做MyAppService.java,重点是完成两个方法:
Service的onCreate和onStartCommand方法。
onCreate仅仅在Service第一次被startService时候初始化操作一次,随后不管再怎么startService,都不会再onCreate了。
耗时的、后台的、不需要用户交互的操作放在onStartCommand里面处理。需要强调一点,Android的Service并不是一个单独的进程、线程空间,是和Android主线程共享进程空间,这就意味,不要在onStartCommand方法里面阻塞主线程,否则将造成ANR!如果在onStartCommand里面有耗时操作,那么务必将onStartCommand里面的耗时操作代码块放到线程里面做。(注意!次说仅仅针对Service,IntentService和Service机制不同,不存在此问题,但有其自身特点,后面文章再说。)
Service的onDestroy只会被调用一次,那就是Service被stopService或者stopSelf时候。

完整的MyAppService.java代码:

package zhangphil.service;

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

public class MyAppService extends Service {

	// 仅仅create一次
	@Override
	public void onCreate() {
		Log.d(this.getClass().getName(), "onCreate");
	}

	// 在这里处理耗时、后台、无需用户交互的‘重口味’操作。
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {

		Log.d(this.getClass().getName(), "hello,service!");

		return super.onStartCommand(intent, flags, startId);
	}

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}

	@Override
	public void onDestroy() {
		Log.d(this.getClass().getName(), "onDestroy");
	}
}


(第2步)在AndroidManifest.xml定义第1步写的Service,在本例中是MyAppService,如代码:

 <application
	
	...

        <service android:name="zhangphil.service.MyAppService" />
        
	...

</application>



(第3步)接下来就可以在自己的activity中通过startService和stopService启动、停止Service了,如代码所示:

Intent intent=new Intent(activity,MyAppService.class);
activity.startService(intent);

...

Intent intent=new Intent(activity,MyAppService.class);
activity.stopService(intent);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangphil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值