2012-11-20 2 views
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) { 

내가 잘못 했습니까?

+0

아마도 매니페스트에 서비스를 등록하지 않았습니다. 또한'IntentService'만이 (WakefulIntentService는 제외하고) 자신의 쓰래드를 포크해서는 안되기 때문에, 당신이 해결하려고하는 모든 문제에 대한 해결책을 다른 곳에서 찾아야 할 것으로 생각됩니다. – CommonsWare

+0

고마워요, @ CommonSWare. 나는 Manifest에 오타가 있었다. Arg. 방해해서 죄송합니다. Threads 주석에 관해서는, 알림을 꺼내고 알림에 중요하지 않은 작업을하고 싶습니다. 그러나 OnDestroy에서는 thread.join()을 수행하여 모든 스레드가 종료되기 전에 완료되는지 확인합니다. 이게 문제 야? – pvd

+0

그런 식으로 DB 잠금을 얻는 중 스레딩이 끝났습니다. 알림을 보낸 후에 작업을 조정했습니다. @ CommonsWare에 다시 한 번 감사드립니다. 훌륭한 라이브러리이고,이 라이브러리를 처음으로 작업 할 때 많은 시간을 소비하려고 노력한 후입니다. 내 사용자는 지금 정말 행복합니다! 나는 당신의 대답을 받아들이고 싶습니다 ...하지만 그렇게 할 방법이없는 것 같습니다. – pvd

답변

0

@Commonsware가 정확했습니다. 매니페스트에 항목이 있지만 오타가있었습니다. 그 오자를 바로 잡으면 doWakefulWork가 올바르게 호출되었습니다. @Commonsware에게 도움을 주신 분과 훌륭한 도서관 덕분입니다. 추천!

관련 문제