서비스 모범 사례 – 백그라운드에서 수행되는 일정 작업

7386 단어 타이밍 태스크
ServiceBestPractice 프로젝트를 만들고 다음과 같이 LongRunning Service 클래스를 추가합니다.
package com.example.servicebestpractice;


import java.util.Date;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;
import android.util.Log;

public class LongRunningService extends Service{

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
    
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                Log.d("LongRunningService", "executed at " + new Date().toString());
            }
        }).start();
        AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
        int anHour = 60 * 60 * 1000;  //         
        long triggerAtTime = SystemClock.elapsedRealtime() + anHour;
        Intent i = new Intent(this, AlarmReceiver.class);
        PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);
        manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pi);
        return super.onStartCommand(intent, flags, startId);
    }

}

AlarmReceiver 클래스를 새로 만들고 BroadcastReceiver에서 상속하도록 합니다. 코드는 다음과 같습니다.
package com.example.servicebestpractice;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent(context, LongRunningService.class);
        context.startService(i);
    }

}

다음에 우리는 프로그램을 열 때 LongRunning 서비스를 시작하고mainActivity의 코드를 수정해야 한다. 아래와 같다.
package com.example.servicebestpractice;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent i = new Intent(this, LongRunningService.class);
        startService(i);
    }

}

마지막으로 우리가 사용하는 라디오 수신기와 서비스는 모두 안드로이드 매니페스트에 있어야 한다는 것을 잊지 마세요.xml에 등록해야 합니다. 코드는 다음과 같습니다.
        <service android:name=".LongRunningService">
        </service>
        <receiver android:name=".AlarmReceiver">
        </receiver>

좋은 웹페이지 즐겨찾기