서비스 모범 사례 – 백그라운드에서 수행되는 일정 작업
7386 단어 타이밍 태스크
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>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Grails 통합 Quartz 플러그인으로 작업 시간(Job)build.gradle 의존: 명령을 실행하는 job을 만듭니다. TestJob을 수정하려면: 디렉터에서 동적 호출: 타이밍 작업 일시 중지 복구 시간 작업 JobManagerService 서비스에서 자주 사용하는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.