Android Serviceの1つ:Activityと対話する必要のないローカルサービス
14530 ワード
ローカルサービスの作成は簡単です.まず、androidのサービスクラスを継承するサービスクラスを作成します.ここにはカウントサービスのクラスが書かれており、毎秒カウンタに1つ追加されています.サービスクラスの内部には、バックグラウンドで上記のビジネスロジックを実行するためのスレッドも作成されています.
このサービスをプロファイルAndroidManifestに登録する必要がある.xmlでないと見つかりません:
Activityでローカル・サービスを開始および停止します.
package
com.easymorse;
import
android.app.Service;
import
android.content.Intent;
import
android.os.IBinder;
import
android.util.Log;
public
class
CountService
extends
Service {
private
boolean
threadDisable;
private
int
count; @Override
public
IBinder onBind(Intent intent) {
return
null
; } @Override
public
void
onCreate() {
super
.onCreate();
new
Thread(
new
Runnable() { @Override
public
void
run() {
while
(
!
threadDisable) {
try
{ Thread.sleep(
1000
); }
catch
(InterruptedException e) { } count
++
; Log.v(
"
CountService
"
,
"
Count is
"
+
count); } } }).start(); } @Override
public
void
onDestroy() {
super
.onDestroy();
this
.threadDisable
=
true
; Log.v(
"
CountService
"
,
"
on destroy
"
); }
public
int
getCount() {
return
count; } }
このサービスをプロファイルAndroidManifestに登録する必要がある.xmlでないと見つかりません:
<?
xml version="1.0" encoding="utf-8"
?>
<
manifest
xmlns:android
="http://schemas.android.com/apk/res/android"
package
="com.easymorse"
android:versionCode
="1"
android:versionName
="1.0"
>
<
application
android:icon
="@drawable/icon"
android:label
="@string/app_name"
>
<
activity
android:name
=".LocalServiceDemoActivity"
android:label
="@string/app_name"
>
<
intent-filter
>
<
action
android:name
="android.intent.action.MAIN"
/>
<
category
android:name
="android.intent.category.LAUNCHER"
/>
</
intent-filter
>
</
activity
>
<
service
android:name
="CountService"
/>
</
application
>
<
uses-sdk
android:minSdkVersion
="3"
/>
</
manifest
>
Activityでローカル・サービスを開始および停止します.
package com.easymorse;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class LocalServiceDemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.startService(new Intent(this, CountService.class));
}
@Override
protected void onDestroy() {
super.onDestroy();
this.stopService(new Intent(this, CountService.class));
}
}