2013-09-27 1 views
0

안녕하세요.다른 클래스의 메서드를 호출하려면 서비스가 필요합니다. 무엇이 될까?

내 시나리오입니다.

AlarmManager를 통해 알람을 예약해야합니다. 휴대 전화가 켜져있을 때 응용 프로그램이

  • 를 실행하는 경우

    알람의 일정은 모두

    1. 일어날 필요가있다. 이 시나리오에서는 BOOT 수신기를 통해 서비스를 시작합니다.

    이제 부스 케이스에서 일정을 잡기 위해 일정 클래스의 메서드를 호출해야합니다.

    • 이 방법은 내가 입력 방법은 상황에 따라, 실행중인 활동에 의해 또는 서비스 모두를 호출 할 필요가
    • 으로 생성 된 이벤트 객체를 수행하게 고려

    내 질문 : 어떤 종류의 개체 (위의 메서드가 포함될 것입니다)를 만들어야합니까?

    활동? 그렇게 생각하지 마세요 ...

    서비스가 있으십니까? 그렇게 생각하지 마시오

    무엇을 사용할 수 있습니까?

  • +0

    정확히 어떻게해야할까요? 전체적인 아이디어가 이벤트를 유지하기 만하면 ContentProvider를 사용할 수 있습니다. – ivagarz

    +0

    @ivagarz 감사합니다. ivagarz, 메서드는 AlarmManager를 통해 알람을 설정합니다. IMHO ContentProvider가 해결책이 될 것이라고 생각하지 않습니다. –

    +0

    Intent를 BroadcastReceiver에 보내고 싶습니다. – goto10

    답변

    2

    저는 이미 이와 비슷한 것을 구현했습니다. 내 응용 프로그램에서는 BroadcastReceiver이 알람 (Intent)을 수신 한 다음 일부 매개 변수를 전달하는 활성화가 시작됩니다.

    이것은 내 코드 조각입니다. 이 매개 변수 내가 알람을 설정하는 방법을 포함하는 클래스의 이름 ReminderManger을 writed

    public class AlarmReceiver extends BroadcastReceiver{ 
    
    @Override 
    public void onReceive(Context c, Intent i) { 
        int answerType = i.getExtras().getInt("answerType"); 
        Intent intent = new Intent(arg0, ReminderActivity.class); 
        intent.putExtra("id", i.getExtras().getInt("id")); 
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        c.startActivity(intent); 
        } 
    
    } 
    

    을 전달하고 수신 abuot 섹션하자. 다음과 같은 내용 :

    public void setAlarm(Notification n){ 
    
         Intent intent = new Intent(reminderContext, AlarmReceiver.class); 
         intent.putExtra("id",n.ID); 
         intent.putExtra("answerType",n.AnswerType); 
    
         int execTimeInt = Integer.parseInt(n.ExecutionTimespan); 
         long execTime = (long)execTimeInt; 
         execTime = execTime*1000; 
    
         PendingIntent pendingIntent = PendingIntent.getBroadcast(reminderContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 
         currentPendingIntent = pendingIntent; 
         AlarmManager alarmManager = (AlarmManager)reminderContext.getSystemService(reminderContext.ALARM_SERVICE); 
         currentAlarm = alarmManager; 
    
         if(execTime < System.currentTimeMillis() && System.currentTimeMillis() - execTime < NOTIFICATION_THRESHOLD) 
         { 
          alarmRunning = true; 
          alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+EXECUTION_DELAY,pendingIntent); 
         } 
    
        } 
    
    +0

    Joseph82 감사합니다.하지만 Activty를 시작할 필요가 없습니다. alarmManager와 메소드를 객체에 전달하는 메서드가 필요합니다. –

    +0

    BroadcastReceiver가 Intent를 수신하면 무엇이든 할 수 있습니다. – GVillani82

    +0

    @Lisa 내 수업 AlarmManager는 수업이 아닌 활동입니다. 그냥 setAlarm 메서드가 실행될 필요가 있습니다. 그런 다음 알람이 나머지 작업을 수행합니다. BroadcastReceiver 내부에서 의도를 가로 챌 때 원하는대로 anythink (예 : Activty를 호출) 할 수 있습니다. – GVillani82

    관련 문제