我使用Volley庫在我的應用程序中與服務器連接。現在,我也必須在應用程序未運行(由用戶殺死)時每隔5分鐘發送一次請求。我應該怎麼做?有了後臺服務,AlarmManager
(谷歌說這不是網絡運營的好選擇)還是別的什麼?在背景中每5分鐘運行排出請求android
或者也許SyncAdapter會對它有好處?
我使用Volley庫在我的應用程序中與服務器連接。現在,我也必須在應用程序未運行(由用戶殺死)時每隔5分鐘發送一次請求。我應該怎麼做?有了後臺服務,AlarmManager
(谷歌說這不是網絡運營的好選擇)還是別的什麼?在背景中每5分鐘運行排出請求android
或者也許SyncAdapter會對它有好處?
您可以在服務類中使用一個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);
我更喜歡使用Android處理程序,因爲它是在UI線程中執行默認。
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);
只需使用服務 –