关于Service的start方法笔记

众所周知,Android Service里的onCreate方法永远只会执行一次。

当调用startService()方法的时候,如果Service还没启动的话,就会调用onCreate(),否则调用onStrat方法。

 

这里就会产生一个问题,在多次使用startService()的时候,会不会产生不同的对象呢?

 

其实仔细想想也就知道了,onCreate()方法,就会创建实例,而onStrat()就不会产生实例。

 

如果在多处地方调用onStrat也一样

 

为些我写一个例子来测试一下;

   Activity如下,在创建Activity的时候启动了Service,然后点击按钮也调用startService()方法

public class MainActivity extends Activity implements OnTouchListener {

	Button btton;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		Intent i = new Intent(MainActivity.this, MyService.class);
		i.putExtra("msg", "Activity 启动");
		startService(i);
		btton = (Button) findViewById(R.id.button1);
		btton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent i = new Intent(MainActivity.this, MyService.class);
				i.putExtra("msg", "Button启动");
				startService(i);
			}
		});
	}

 

 

 Service,定义一个int 型,在每次的调用onStrat()的时候把int的值给输出来,变量加1

public class MyService extends Service {
	private int i = 0;

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


	@Override
	public void onCreate() {
		Log.v("xiaozhi", i + "i");
		super.onCreate();
	}


	@Override
	public void onStart(Intent intent, int startId) {
		
		String msg = intent.getStringExtra("msg");
		Log.v("xiaozhi", msg + "========>" + i+"                  satrtid====>"+startId);
		i++;
		super.onStart(intent, startId);
	}

 

输出如下,由此可见,调用onStart方法都是在一个实例上操作



 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值