1
HTTPリクエストを繰り返す最も簡単な方法は何ですか(45分ごと)。 プッシュアップ通知を使用したくありません 私は既にAlarmManagerを試しましたが、動作しませんでした。Android:繰り返されるHTTPリクエスト
Forground Serviceは良い方法ですが、電池が多すぎる可能性があります。
HTTPリクエストを繰り返す最も簡単な方法は何ですか(45分ごと)。 プッシュアップ通知を使用したくありません 私は既にAlarmManagerを試しましたが、動作しませんでした。Android:繰り返されるHTTPリクエスト
Forground Serviceは良い方法ですが、電池が多すぎる可能性があります。
コールあなたの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を使用すると、バッテリの使用量が少なくなり、完全に機能します。私はあなたに完全なソースコードを与えたい場合。 –
できれば、私に例を挙げてください! –