2015-01-22 2 views
0

나는 Alarm Receiver on-Receive Method 내에 20 초 Handler Post Delayed Timer task을 사용했다. 알람 수신기 on-receive 메서드가 호출되기 전에 앱을 종료하면 앱이 제대로 작동합니다. 일단 처리기 게시 지연 타이머 작업을 일단 종료하면 응용 프로그램을 종료합니다. 그런 다음 처리기 게시 지연 타이머 작업은 응용 프로그램을 종료 한 후 자동으로 취소됩니다. 그래서 게시 지연 타이머 작업 내 응용 프로그램에서 호출하지 마십시오.예약 된 처리기 게시 지연 타이머 작업을 유지하는 방법은 응용 프로그램이 Alarm Receiver on-receive Method에서 종료 된 후에 사용할 수 있습니까?

코드 :

Handler handler= new Handler(); 
handler.postDelayed(networkRunnable, 
       10000); 

/** 
* A runnable will be called after the 10 second interval 
*/ 
Runnable networkRunnable= new Runnable() { 
    @Override 
    public void run() { 
     // Called after 10 seconds 
     cancelNetworkTask(); 
     // My Job to do after 10 seconds 
    } 
}; 

다음 경보 수신기는 타이머 작업을 예약합니다라는 방법에-받을 때부터 다음 응용 프로그램을 종료 한 후 미세 노력하고 있습니다.

Alarm Receiver의 수신 방식에서 goAsync()를 시도했습니다. 그래서이 또한이 문제를 해결하는 데 도움이되지 않습니다. 일단 응용 프로그램을 종료하면 예약 된 타이머 작업이 취소됩니다.

예약 된 처리기 게시 지연 타이머 작업을 유지하는 방법은 앱이 수신 알람 수신 방법에서 종료 된 후에 사용할 수 있습니다.

도와주세요.

+0

시작 onReceive 방법에서 서비스 아래 추가

public class AlarmReceiver extends BroadcastReceiver { PowerManager.WakeLock wl; @Override public void onReceive(Context context, Intent intent) { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "backgroundwakelock"); wl.acquire(); //put your ui update code here wl.release(); } } 

AlarmReceiver 클래스를 만들고 TimerTask를가 시작 :

은 당신의 활동에 아래 추가 – Praveen

+0

응용 프로그램이 clo 인 경우에도 의도가 시작되면 응용 프로그램 경보 관리자가 시작됩니다 sed. 내 문제는 타이머 작업이 예약 된 후 내 응용 프로그램을 닫으면 예약 된 타이머 작업이 취소됩니다. –

+0

thats 분명한 .. 타이머 작업이 백그라운드 프로세스가 아니기 때문에 – Praveen

답변

0

Intent with AlarmManager를 예약하면 응용 프로그램이 닫힌 경우에도 의도가 시작될 때 응용 프로그램이 시작됩니다.

AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     Intent alarmIntent = new Intent(context, AlarmReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1, alarmIntent, 0); 
     manager.set(AlarmManager.RTC_WAKEUP, 10000, pendingIntent); //set 10 sec 

이 매니페스트 파일

<receiver android:name=".AlarmReceiver"/> 
+0

나는 10 초 후에 실행하도록 예정된 onreceive 방법의 내부에 타이머 작업을 가지고 있습니다. 5 초에 앱을 닫으면 예정된 타이머 작업도 취소되고 10 초 후에 실행되지 않습니다. 그러나 알람 수신기의 다음 반복 동안 잘 작동합니다. –

+0

알람 관리자를 설정할 때 웨이크 잠금 장치를 확보했습니다. 그리고 알람 관리자가 취소 할 때 그것을 놓으십시오. –

+0

왜 alarmreceiver에서 Timertask를 실행해야합니까? 10 초에 AlarmReceiver를 실행하여 timertask없이 UI를 업데이트하도록 설정하십시오. – Psypher

관련 문제