Service服务

玩过安卓的朋友都知道,安卓的显著特点:应用程序可以在后台运行,这样的效果就是用到android 的四大组件之一Service服务。

就我刚学Service写点学习经验吧。首先Service不是一个独立的进程,也不是一个独立的线程,它是和应用程序绑定在一起的。可能对于多线程掌握的不好,我也不是很理解。写一个简单的服务来记录Service吧。

首先是界面类,MyService.java

public class MyService extends Activity {
	Intent intent ;

	@Override
	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		setContentView(R.layout.service);
		Button start = (Button) findViewById(R.id.startService);
		start.setOnClickListener(new OnClickListener() {
			// 匿名内部类的作用域在内部类中,不能直接用this来表示当前的activity
			@Override
			public void onClick(View v) {
				intent = new Intent(MyService.this, Services.class);
				MyService.this.startService(intent);

			}
		});
		Button stop = (Button) findViewById(R.id.stopService);
		stop.setOnClickListener(new OnClickListener() {
			// 匿名内部类的作用域在内部类中,不能直接用this来表示当前的activity
			@Override
			public void onClick(View v) {
				if (intent != null) {
					boolean b = MyService.this.stopService(intent);// 这里返回一个boolean值
					Log.i("stop", "stop Service !"+b);
				}
			}
		});

	}
}
然后是服务类,Services.java

public class Services extends Service {

	private static final String TAG = "service->";

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		// 用一个线程将服务包容一起来,防止I/O阻塞,这里也涉及到一个匿名内部类
		new Thread(new Runnable() {

			@Override
			public void run() {
				for (int i = 0; i < 30; i++) {
					try {
						Thread.sleep(1000);
						Log.i(TAG, "start service" + i);

					} catch (Exception e) {
						e.printStackTrace();
					}
				}

			}

		}).start();

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

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void onDestroy() {
		Log.i("service", "service id destroy");
		super.onDestroy();
	}
}
这里也只是一个小例子,帮助刚学Service的朋友理解下,这里用logcat打印出来有助于对Service后台服务的理解


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值