Service与Runnable开始与停止系统服务

两部分ControlService.java(Activity)和MyService.java(Service)

MyService.java

 

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

public class MyService extends Service {

	/* 建立Handler对象,作为线程传递 postDelayed之用 */
	private Handler objHandler = new Handler();

	/* 为确认系统服务执行情况 */
	private int intCounter = 0;

	/* 成员变量mTasks为Runnable对象,作为Timer之用 */
	private Runnable mTasks = new Runnable() {
		/* 执行线程 */
		public void run() {
			/* 递增counter整数,作为后台服务运行时间识别 */
			intCounter++;

			/* 以Log对象LogCat里输出log信息,监看服务执行情况 */
			Log.i("HIPPO", "Counter:" + Integer.toString(intCounter));

			/* 每1秒调用Handler.postDelayed方法反复执行 */
			objHandler.postDelayed(mTasks, 1000);
		}
	};

	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
	}
	
	public void onCreate() {
		/* 服务开始,调用每1秒mTasks线程 */
		objHandler.postDelayed(mTasks, 1000);
		super.onCreate();
	}

	public IBinder onBind(Intent intent) {
		/* IBinder方法为Service建构必须重写的方法 */
		return null;
	}

	public void onDestroy() {
		/* 当服务结束,移除mTasks线程 */
		objHandler.removeCallbacks(mTasks);
		super.onDestroy();
	}

}

 

 ControlService.java

 

public class ControlService extends Activity {
	
	private Button mButton01, mButton02;
	
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.control_service);

		mButton01 = (Button) findViewById(R.id.myButton1);

		/* 开始启动系统服务按钮事件 */
		mButton01.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
				/* 建构Intent对象,指定开启对象为mService1服务 */
				Intent i = new Intent(ControlService.this, MyService.class);

				/* 设定新TASK的方式 */
				i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

				/* 以startService方法启动Intent */
				startService(i);
			}
		});

		mButton02 = (Button) findViewById(R.id.myButton2);

		/* 关闭系统服务按钮事件 */
		mButton02.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
				/* 构造Intent对象,指定欲关闭的对象为mService1服务 */
				Intent i = new Intent(ControlService.this, MyService.class);
				/* 以stopService方法关闭Intent */
				stopService(i);
			}
		});
	}
}

 manifest.xml

 

<activity
			android:name=".ControlService"
			android:label="@string/app_name">
		</activity>
		<service
			android:name=".MyService"
			android:exported="true"
			android:process=":remote"></service>

 注意:1.service必须写在该activity之后 2.必须为service定义android:exported="true",使该服务能被其他程序访问


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值