2015-08-27 77 views
2

我使用Volley庫在我的應用程序中與服務器連接。現在,我也必須在應用程序未運行(由用戶殺死)時每隔5分鐘發送一次請求。我應該怎麼做?有了後臺服務,AlarmManager(谷歌說這不是網絡運營的好選擇)還是別的什麼?在背景中每5分鐘運行排出請求android

或者也許SyncAdapter會對它有好處?

+1

只需使用服務 –

回答

4

您可以在服務類中使用一個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); 
+0

非常感謝!這是工作 – Seravier

+0

很高興.... :) –

+0

當然它會停止工作,只要設備將進入睡眠 – Selvin

3

我更喜歡使用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);