运行 每 5 分钟在后台发送一次截击请求 android
Run volley request every 5 minutes in background android
我在我的应用程序中使用 Volley 库连接服务器。现在,当应用程序不是 运行(被用户杀死)时,我也必须每 5 分钟在后台发送一次请求。我应该怎么做?有了后台服务,AlarmManager
(Google说这不是网络操作的好选择)还是别的?
或者 SyncAdapter 可能适合它?
您可以在服务 class 中使用带 scheduleAtFixedRate 的 TimerTask 来实现此目的,这里是服务 class 的示例,您可以使用它
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);
我在我的应用程序中使用 Volley 库连接服务器。现在,当应用程序不是 运行(被用户杀死)时,我也必须每 5 分钟在后台发送一次请求。我应该怎么做?有了后台服务,AlarmManager
(Google说这不是网络操作的好选择)还是别的?
或者 SyncAdapter 可能适合它?
您可以在服务 class 中使用带 scheduleAtFixedRate 的 TimerTask 来实现此目的,这里是服务 class 的示例,您可以使用它
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);