Запускай залп каждые 5 минут в фоновом режиме на андроид

Я использую библиотеку Volley для соединения с сервером в моем приложении. Теперь я должен отправлять запрос в фоновом режиме каждые 5 минут, даже если приложение не запущено (убито пользователем). Как я должен это делать? С фоновыми услугами,AlarmManager (Google говорит, что это не хороший выбор для сетевых операций) или что-то еще?

Или, может быть, SyncAdapter подойдет для этого?

 Teo Inke27 авг. 2015 г., 23:29
Просто используйте Сервис

Ответы на вопрос(2)

потому что он по умолчанию выполняется в потоке пользовательского интерфейса.

import android.os.Handler;

// Create the Handler object (on the main thread by default)
Handler handler = new Handler();
// Define the code block to be executed
private Runnable runnableCode = new Runnable() {
    @Override
    public void run() {

       sendVolleyRequestToServer(); // Volley Request 

      // Repeat this the same runnable code block again another 2 seconds
      handler.postDelayed(runnableCode, 2000);
    }
};
// Start the initial runnable task by posting through the handler
handler.post(runnableCode);
Решение Вопроса

Вы можете использовать TimerTask сscheduleAtFixedRate в классе обслуживания, чтобы достичь этого, вот пример класса обслуживания, вы можете использовать его

public class ScheduledService extends Service 
{

private Timer timer = new Timer();


@Override
public IBinder onBind(Intent intent) 
{
    return null;
}

@Override
public void onCreate() 
{
    super.onCreate();
    timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            sendRequestToServer();   //Your code here
        }
    }, 0, 5*60*1000);//5 Minutes
}

@Override
public void onDestroy() 
{
    super.onDestroy();
}

}

Ты можешь использоватьsendRequestToServer способ связи с сервером. Вот декларация Сервиса.

<service android:name=".ScheduledService" android:icon="@drawable/icon" android:label="@string/app_name" android:enabled="true"/>

Чтобы запустить сервис из MainActivity,

// use this to start and trigger a service
Intent i= new Intent(context, ScheduledService.class);
context.startService(i);
 Arsal Imam27 авг. 2015 г., 23:49
Будь счастлив.... :)
 Selvin28 авг. 2015 г., 00:07
и, конечно, он перестанет работать, как только устройство перейдет в спящий режим
 Seravier27 авг. 2015 г., 23:44
Спасибо вам большое! Это работа

Ваш ответ на вопрос