android--Service

bindService

public class BindService extends Service {
	private static final String TAG = "BindService";
	private IBinder binder=new MyBinder();
	
	public class MyBinder extends Binder{
		public BindService getService(){
			return BindService.this;
		}
	}
	@Override
	public IBinder onBind(Intent arg0) {	
		return binder;
	}
	
	public void show(){
		System.out.println("df123123123");
		Log.i(TAG,"show()");
	}
	@Override
	public void onCreate() {
		Log.i(TAG,"onCreate()");
		super.onCreate();
	}

}

MainActivity

	private void unbindService() {
		if (isConnected) {
			unbindService(conn);
			isConnected = false;
			Log.i(TAG, "unbindService");
		}
	}
	private void bindService() {
		Intent intent1 = new Intent(MainActivity.this, BindService.class);

		bindService(intent1,conn,Context.BIND_AUTO_CREATE);
		Log.i(TAG, "bindService");	
	}
	private ServiceConnection conn = new ServiceConnection() {

		@Override
		public void onServiceDisconnected(ComponentName name) {
			isConnected = false;
			Log.i(TAG, "onServiceDisconnected");
		}

		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			Toast.makeText(MainActivity.this, "Service  Connected.", Toast.LENGTH_SHORT).show();  
			MyBinder binder = (MyBinder) service;
			BindService bind = binder.getService();
			bind.show();
			isConnected = true;
		}
	};


 

注:ServiceConnection中的onServiceDisconnected()方法不会在unbindService()时调用,只有在被系统杀死服务时才调用.onServiceConnected()只有在绑定服务时调用一次,在没unbind服务时不会再调用

onCreate()-->onBind()-->onUnbind()-->onDestroy()

startService

public class MyService extends Service {

	private static final String TAG = "my";
	int i=0;
	@Override
	public void onCreate() {
		Log.i(TAG, "onCreate()"+Thread.currentThread().getName());
		super.onCreate();
	}

	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		Log.i(TAG, "onDestroy()"+Thread.currentThread().getName());
		super.onDestroy();
	}
	
	//执行任务在此方法中
	public int onStartCommand(Intent intent, int flags, int startId) {
		// TODO Auto-generated method stub
		Log.i(TAG, "onStartCommand()"+i++);
		return /*super.onStartCommand(intent, flags, startId)*/START_REDELIVER_INTENT;
	}

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		Log.i(TAG, "onBind()");
		return null;
	}

}

MainActivity

		Intent intent = new Intent(MainActivity.this, MyService.class);
			switch (v.getId()) {
			case R.id.button1:
				startService(intent);
				
				break;

			case R.id.button2:

				stopService(intent);
				break;

 

onCreate()-->onStartCommand()-->onDestroy()

 

IntentService

public class MyIntentService extends IntentService {

	private static final String TAG = "MyIntentService";

	public MyIntentService() {
		super("MyIntentService");//此处得是类名
		// TODO Auto-generated constructor stub
	}

	//每次start服务都会执行此方法,当上个任务完成,才会执行下次任务,当所有任务完成会自动停止服务
	protected void onHandleIntent(Intent intent) {
		Log.i(TAG, "IntentService"+Thread.currentThread().getId());
		try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

MainActivity

startService(new Intent(MainActivity.this,MyIntentService.class));

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值