Run volley request every 5 minutes in background android

前端 未结 2 1976
盖世英雄少女心
盖世英雄少女心 2021-02-04 21:52

I use Volley library to connect with server in my app. Now, I have to send request in background every 5 minutes also when app is not running (killed by user). How should I do i

相关标签:
2条回答
  • 2021-02-04 22:12

    I prefer to use Android Handler because it is executes in UI Thread by default.

    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);
    
    0 讨论(0)
  • 2021-02-04 22:18

    You can use a TimerTask with scheduleAtFixedRate in a service class to achieve this, here is an example of Service class, you can use it

    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();
    }
    
    }
    

    You can use sendRequestToServer method to connect with the server. Here is the manifest declaration of the Service.

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

    To start the service from MainActivity,

    // use this to start and trigger a service
    Intent i= new Intent(context, ScheduledService.class);
    context.startService(i);
    
    0 讨论(0)
提交回复
热议问题