1
반복되는 HTTP 요청 (즉, 45 분마다)을 만드는 가장 쉬운 방법은 무엇입니까? 푸시 업 알림을 사용하고 싶지 않습니다. 이미 AlarmManager를 시도했지만 작동하지 않았습니다.Android : 반복 된 HTTP 요청
지상 서비스는 좋은 방법 일 수 있지만 배터리를 너무 많이 소모 할 수 있습니다.
반복되는 HTTP 요청 (즉, 45 분마다)을 만드는 가장 쉬운 방법은 무엇입니까? 푸시 업 알림을 사용하고 싶지 않습니다. 이미 AlarmManager를 시도했지만 작동하지 않았습니다.Android : 반복 된 HTTP 요청
지상 서비스는 좋은 방법 일 수 있지만 배터리를 너무 많이 소모 할 수 있습니다.
전화 당신의 MainActivity에서이 metod :
private void setNotifyAlarm() {
long _alarm;
Calendar now = Calendar.getInstance();
Calendar wakeupcall = Calendar.getInstance();
wakeupcall.setTimeInMillis(System.currentTimeMillis());
wakeupcall.set(Calendar.HOUR_OF_DAY, 15);
wakeupcall.set(Calendar.MINUTE, 30);
if (wakeupcall.getTimeInMillis() <= now.getTimeInMillis())
_alarm=wakeupcall.getTimeInMillis() + (AlarmManager.INTERVAL_DAY+1);
else
_alarm=wakeupcall.getTimeInMillis();
al = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
notif= new Intent(this,NotifyService.class);
fintent = PendingIntent.getService(this,0,notif,0);
al.setRepeating(AlarmManager.RTC_WAKEUP,_alarm,"45 minutes in Miliseconds", fintent);
HTTP가 requuest에 대한 서비스를 만드는 :
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<service android:name=".NotifyService" android:exported="true" android:enabled="true"/>
이 코드 : NotifyService.java
public class NotifyService extends Service {
private NotificationManager mNotificationManager;
PowerManager powerManager;
PowerManager.WakeLock wakeLock;
@Override
public void onCreate() {
super.onCreate();
powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "NOTIFY");
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
private void handleSERVICE(Intent intent){
new NotifyTASK().execute();
}
private class NotifyTASK extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... voids) {
{
DO your HTTP CALLS
}
stopSelf();
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
wakeLock.acquire();
handleSERVICE(intent);
return START_STICKY;
}
@Override
public void onDestroy() {
wakeLock.release();
}
}
지금 매니페스트 파일이 추가 지정된 시간 간격으로 서비스를 시작하십시오. 희망이 있으면 더 많은 코드가 필요하면 알려주세요.
alaram manger를 사용하면 배터리 사용량이 적어 완벽하게 작동합니다. 만약 내가 당신에게 완전한 소스 코드를 제공합니다. –
가능하다면, 예를 들어주세요. –