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