2016-11-04 9 views
1

HTTPリクエストを繰り返す最も簡単な方法は何ですか(45分ごと)。 プッシュアップ通知を使用したくありません 私は既にAlarmManagerを試しましたが、動作しませんでした。Android:繰り返されるHTTPリクエスト

Forground Serviceは良い方法ですが、電池が多すぎる可能性があります。

+0

alaram mangerを使用すると、バッテリの使用量が少なくなり、完全に機能します。私はあなたに完全なソースコードを与えたい場合。 –

+0

できれば、私に例を挙げてください! –

答えて

0

コールあなたの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(); 
    } 
} 

今すぐマニフェストファイルでこれを追加指定された時間間隔でサービスを開始する。 あなたがもっとコードを必要とする場合は、これはあなたに役立つことを願って私に教えてください。

関連する問題