`

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",使该服务能被其他程序访问


  • 大小: 29.8 KB
分享到:
评论

相关推荐

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK开发范例大全(完整版)

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK开发范例大全的目录

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google+Android+SDK开发范例大全

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android sdk 开发范例大全 部分章节代码

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK 开发范例大全01

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK 开发范例大全02

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Android锁屏无法继续定位问题

    此时的服务以及线程等都会停止。 最近就这个问题,阅读了很多代码以及官方文档,下面就说下最近都尝试过的方式,可能其中有些您实现了,我这边没实现,望见谅。本文采用的高德定位。 一、PowerManager.WakeLock (1...

    android 面试2

    //停止startService启动的服务  unbindService(intent);//停止bindService启动的服务  9. 注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。  答:两种,一种是xml注册,一种是代码...

    超级有影响力霸气的Java面试题大全文档

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    java 面试题 总结

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    ap6212a0_a33_sc3817r_神舟验证版本_借用nvram_ap6210这个配置文件_20170626_1834没有外层目录.7z

    调通sina33下的AP6212A0(WIFI+BT) 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 ...完成时间:2017/6/26 11:01 版本:V1.1 本文参照: 《A33 wifi移植说明书.pdf》 还有就是全志R16的parrotv1.1的官方SDK(Android...

Global site tag (gtag.js) - Google Analytics