0
내 프로젝트에 Commonsware WakefulIntentService jar 파일을 구현했습니다.SendWakeFull 작업이 호출되지 않았습니다.
Intent intent = new Intent(context, AlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
// Get the AlarmManager service
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
// CONSTANT.ALARM_TIME is set to 300000
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+CONSTANT.ALARM_TIME, CONSTANT.ALARM_TIME, pi);
I 설치 방송 수신기는 다음과 같이 다음과 같이
내가 설정 새로운 알람이
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.commonsware.cwac.wakeful.WakefulIntentService;
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
WakefulIntentService.sendWakefulWork(context, AlarmService.class);
}
}
내가이 설정을 디버깅하고 나는 AlarmReceiver 클래스에 중단 점을 설정할 때, 그것은 발화한다.
그러나 doWakeFulWork의 중단 점은 결코 도달하지 않습니다.
import com.commonsware.cwac.wakeful.WakefulIntentService;
public class AlarmService extends WakefulIntentService implements OFDelegate {
private MMApp myApp;
private Account _currentAccount;
private ArrayList<Thread> _threads;
private static final String SHOW_TIME_FORMAT = "h:mma";
private final static String CLASS_NAME = AlarmService.class.getName();
public AlarmService() {
super("AlarmService");
}
@Override
protected void doWakefulWork(Intent intent) {
내가 잘못 했습니까?
아마도 매니페스트에 서비스를 등록하지 않았습니다. 또한'IntentService'만이 (WakefulIntentService는 제외하고) 자신의 쓰래드를 포크해서는 안되기 때문에, 당신이 해결하려고하는 모든 문제에 대한 해결책을 다른 곳에서 찾아야 할 것으로 생각됩니다. – CommonsWare
고마워요, @ CommonSWare. 나는 Manifest에 오타가 있었다. Arg. 방해해서 죄송합니다. Threads 주석에 관해서는, 알림을 꺼내고 알림에 중요하지 않은 작업을하고 싶습니다. 그러나 OnDestroy에서는 thread.join()을 수행하여 모든 스레드가 종료되기 전에 완료되는지 확인합니다. 이게 문제 야? – pvd
그런 식으로 DB 잠금을 얻는 중 스레딩이 끝났습니다. 알림을 보낸 후에 작업을 조정했습니다. @ CommonsWare에 다시 한 번 감사드립니다. 훌륭한 라이브러리이고,이 라이브러리를 처음으로 작업 할 때 많은 시간을 소비하려고 노력한 후입니다. 내 사용자는 지금 정말 행복합니다! 나는 당신의 대답을 받아들이고 싶습니다 ...하지만 그렇게 할 방법이없는 것 같습니다. – pvd