我应该使用同步适配器吗
Should I use sync adapter
我的应用要求
登录。
注册。
以 1 分钟的周期性间隔从服务器获取数据并更新 UI。
没有本地数据库。
对于登录和注册,我将使用普通的 HTTP 调用,但对于间隔 1 分钟的定期请求,我想使用 SyncAdapter,
我应该为此使用 SyncAdapter 吗?即使我没有本地数据库存储。
是否可以从 SyncAdapter 更新 UI?
我已经浏览了以下链接
How do I use the Android SyncAdapter?
Sync data between Android App and webserver
Android SyncAdapter use case
Sync data between Android App and webserver
同步适配器旨在 运行 在关闭时间保持本地和服务器之间的数据最新。不是经常,当然不是每分钟。
您可能应该只实现一个计时器或处理程序来控制它。
类似于this answer。
private int mInterval = 60000; // 60 seconds
private Handler mHandler;
@Override
protected void onCreate(Bundle bundle) {
...
mHandler = new Handler();
startRepeatingTask();
}
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
downloadChangesFromServer();
mHandler.postDelayed(mStatusChecker, mInterval);
}
};
void startRepeatingTask() {
mStatusChecker.run();
}
void stopRepeatingTask() {
mHandler.removeCallbacks(mStatusChecker);
}
正如官方文档所说
The sync adapter component in your app encapsulates the code for the
tasks that transfer data between the device and a server. Based on the
scheduling and triggers you provide in your app, the sync adapter
framework runs the code in the sync adapter component.
我建议您在需要定期更新时使用 SyncAdapter,即使用户没有使用该应用程序也是如此。 SyncAdapter 的主要优势在于,即使您不使用该应用程序,它也可以通过 Android 系统进行切换。因此,当用户进入应用程序时,他始终拥有实际数据。如果您没有本地数据库并且只需要定期更新,请改用 Handler。
int updatePeriod = 60*1000;// one minute in milliseconds
mHandler = new Handler();
mRunnable = new Runnable(){
@Override
public void run() {
//update request here
mHandler.postDelayed(mRunnable, updatePeriod );
}
};
mRunnable.run(); // missing
此代码每分钟 运行s 运行()。将您的更新逻辑添加到 运行 方法。此外,如果您每分钟都请求服务器数据,您只会浪费设备电池。如果您想了解有关使用网络的更多信息,请观看此视频 https://www.youtube.com/watch?v=l5mE3Tpjejs
我的应用要求
登录。
注册。
以 1 分钟的周期性间隔从服务器获取数据并更新 UI。
没有本地数据库。
对于登录和注册,我将使用普通的 HTTP 调用,但对于间隔 1 分钟的定期请求,我想使用 SyncAdapter,
我应该为此使用 SyncAdapter 吗?即使我没有本地数据库存储。
是否可以从 SyncAdapter 更新 UI?
我已经浏览了以下链接 How do I use the Android SyncAdapter?
Sync data between Android App and webserver
Android SyncAdapter use case
Sync data between Android App and webserver
同步适配器旨在 运行 在关闭时间保持本地和服务器之间的数据最新。不是经常,当然不是每分钟。
您可能应该只实现一个计时器或处理程序来控制它。
类似于this answer。
private int mInterval = 60000; // 60 seconds
private Handler mHandler;
@Override
protected void onCreate(Bundle bundle) {
...
mHandler = new Handler();
startRepeatingTask();
}
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
downloadChangesFromServer();
mHandler.postDelayed(mStatusChecker, mInterval);
}
};
void startRepeatingTask() {
mStatusChecker.run();
}
void stopRepeatingTask() {
mHandler.removeCallbacks(mStatusChecker);
}
正如官方文档所说
The sync adapter component in your app encapsulates the code for the tasks that transfer data between the device and a server. Based on the scheduling and triggers you provide in your app, the sync adapter framework runs the code in the sync adapter component.
我建议您在需要定期更新时使用 SyncAdapter,即使用户没有使用该应用程序也是如此。 SyncAdapter 的主要优势在于,即使您不使用该应用程序,它也可以通过 Android 系统进行切换。因此,当用户进入应用程序时,他始终拥有实际数据。如果您没有本地数据库并且只需要定期更新,请改用 Handler。
int updatePeriod = 60*1000;// one minute in milliseconds
mHandler = new Handler();
mRunnable = new Runnable(){
@Override
public void run() {
//update request here
mHandler.postDelayed(mRunnable, updatePeriod );
}
};
mRunnable.run(); // missing
此代码每分钟 运行s 运行()。将您的更新逻辑添加到 运行 方法。此外,如果您每分钟都请求服务器数据,您只会浪费设备电池。如果您想了解有关使用网络的更多信息,请观看此视频 https://www.youtube.com/watch?v=l5mE3Tpjejs