1
重复HTTP请求最简单的方法是什么(即每45分钟)? 我不想使用任何推送通知 我已经试过AlarmManager,但它没有工作。Android:重复HTTP请求
Forground Service可能是一种好方法,但它可能会消耗太多电量。
重复HTTP请求最简单的方法是什么(即每45分钟)? 我不想使用任何推送通知 我已经试过AlarmManager,但它没有工作。Android:重复HTTP请求
Forground Service可能是一种好方法,但它可能会消耗太多电量。
调用此梅托德从您的MainActivity:
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: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();
}
}
现在加入这个清单文件:
<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"/>
此代码以指定的时间间隔开始服务。 希望这对你有所帮助,如果你需要更多的代码然后告诉我。
使用阿拉姆马槽,它使用更少的电池和完美的工作。如果我想给你完整的源代码。 –
请,如果可以的话,给我一个例子,为它! –