Android Serviceの1つ:Activityと対話する必要のないローカルサービス

14530 ワード

ローカルサービスの作成は簡単です.まず、androidのサービスクラスを継承するサービスクラスを作成します.ここにはカウントサービスのクラスが書かれており、毎秒カウンタに1つ追加されています.サービスクラスの内部には、バックグラウンドで上記のビジネスロジックを実行するためのスレッドも作成されています.

   
   
   
   
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));
    }
}