2012-12-31 2 views
0

BroadcastReceiver를 확장하는 클래스 Autostart를 작성했습니다. 이것은 안드로이드가 재부팅 될 때마다 시작됩니다. 이 클래스에는 몇 가지 의도와 알람 관리자가 있습니다. 모든 것이 완벽하게 실행됩니다. 이제이 클래스를 활성화/비활성화하기 위해 "환경 설정"을 추가했습니다. 문제는 IF/ELSE를 사용하여이 클래스를 비활성화 한 다음 나중에 활성화하면 모바일을 다시 시작해야한다는 것입니다.BroadcastReceiver 자동 시작 활성화

어떻게이 문제를 해결할 수 있습니까?

public void onReceive(Context context, Intent intent) { 

Calendar cal1 = Calendar.getInstance(); 
[...] 

Intent intent2 = new Intent(context, AlarmReceiver.class); 
[...] 

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
[...] 
+1

'onRecieve()'에서 환경 설정을 검사 할 수 있으며 환경 설정이 disable로 설정된 경우 아무 일도하지 않습니다. 또한 필요에 따라이 코드를 트리거 할 수있는 사용자 지정 정의 된 브로드 캐스트를 사용하십시오. (활성화 할 때) –

+0

고마워, 보니 : public abstract void onReceive (Context context, Intent intent). 나는 그 모범을 보여줄 수 있는가? 감사! –

답변

2

문제는 :이 클래스를 사용하지 않는 경우, 나는 모바일 다시 시작해야 활성화 (/ ELSE IF 사용), 그리고 나중에.

부팅시 실행되는 코드를 정적 방법으로 옮깁니다. 부팅시 BroadcastReceiver에서 코드를 호출하고 "이 논리 사용"코드 경로에서 호출하십시오.

+0

mhmhm ... 그래서, 다른 BroadcastReceiver를 만들고이 코드를 넣어야합니까? –

+1

@ PolHallen : 아마도 그렇지 않습니다. 내 대답은 확실히 그런 말은하지 않습니다. "정적 메소드"는 'BroadcastReceiver'가 아닙니다. 이미 "BroadcastReceiver"("BroadcastReceiver를 확장 한 클래스 자동 시작")가 있습니다. 그저'BroadcastReceiver'의 비즈니스 로직 *을 다른 곳에서 액세스 할 수 있어야합니다. 대부분의 경우, onReceive() 메소드의 내용을 정적 메소드로 옮기면됩니다. onReceive() '호출 (다른 곳에서 호출 될 수 있음). – CommonsWare

+0

좋아요, 저는 이론적 인 말로 당신의 말을 이해했습니다. 그러나 라인 연습에서 어떻게합니까? 제가 예를 들어 주시겠습니까? 감사! –