gpt4 book ai didi

java - 尝试决定使用哪种方法将 Android 连接到 Web 服务

转载 作者:行者123 更新时间:2023-12-01 13:41:43 25 4
gpt4 key购买 nike

我已经阅读了该网站上的几篇文章,以及几本有关处理程序、线程、HandlerThreads、服务、SyncAdapters、ContentProviders 等的书籍。似乎有很多不同的选择,但我不知道哪个适合我的项目。

我有一个简单的项目,当应用程序第一次启动时,它将连接到一个简单的 REST Web 服务。它将下载一些 JSON 数据并将其显示在列表中。然后,用户可以编辑此数据,点击“保存”后,应用程序将使用更新的数据向 Web 服务发送 POST。用户还可以手动发起“同步”,这将检查是否有任何新数据。最后,应用程序应定期检查网络服务以查看是否有更多数据。

我从内容提供商开始,但它看起来确实太过分了(而且很复杂),但我确信它最终会起作用。然后我尝试了一个线程,但 Android 建议使用 AsyncTask 或处理程序。我一直在研究它们(将它们放入服务中),两者都会做我想做的事情(使用计时器每 X 分钟启动一次同步),但我不知道这是否是处理此问题的最佳方法。我很担心,因为这个项目可能会包含更多内容,我不想选择一个会限制我 future 的选项,但我也不想投入大量时间在过度杀伤力的事情上。

有人可以帮忙吗?

最佳答案

让我们从整个保持简单的范例开始。

AsyncTask 会是这样的:

public class MyAsyncTask extends AsyncTask<Void, Void, Data> {

public interface OnDone {
public void onDone(Data data);
}

private final OnDone mDone;

public MyAsyncTask(OnDone onDone) {
mDone = onDone;
}

public Data doInBackground(Void v) {
// Download and parse your JSON in the background
}

public void onPostExecute(Data data) {
mOnDone.onDone(data);
}

}

public class OnDoneImpl .... implements OnDone, Runnable {

...
// Just need a context in scope some how, an activity, the application whatever.
Context mContext;

public void onDone(Data data) {
updateList(data);
scheduleAgainInXMinutes(TIME_TILL_REFRESH);
}

public void scheduleAgainInXMinutes(long millis) {
// probably want to use an Alarm service but can always use a handler;
new Handler().postDelayed(this, millis);
}

public void run() {
new MyAsyncTask(this).execute();
}
}

关于java - 尝试决定使用哪种方法将 Android 连接到 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20696811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com