Android Studio Asynctask Alternative

时间:2016-04-21 15:32:17

标签: android android-asynctask

我是Android开发的新手,我遇到了这个问题,我还没有找到解决方案。

首先开始使用webservice api进行登录。如果登录成功,它将执行2个函数以获取所需的实际数据,存储在sqlite中,然后继续下一个活动。所有3个api请求都使用AsyncTask,根据我的理解,我的Activity实际运行速度比我的" doInBackground"背景线程。我想知道路径或我应该研究什么。我已经阅读了有关使用睡眠的帖子,并阅读有关如何做坏事的帖子。我想获取我需要的json数据,存储它,并立即使用它。我想我想找到直接连接并使用进度条来获取数据。请注意,它不是很多数据,但它足以阻止我的应用程序。

1 个答案:

答案 0 :(得分:0)

不确定ProgressBar与从服务器检索数据有什么关系,但如果您正在寻找AsyncTask备选方案(特别是对于HTTP调用),您可以查看这些框架(您可能只想选择一个):

  1. Square's Retrofit
  2. Google's Volley
  3. 在发出HTTP请求时,任何一个都会让您的生活变得更轻松。他们自己的文档解释了如何使用它们,所以我不打算在这里使用它。

    如果您正在寻找原生的低级 .factory('DB', function ($ionicPlatform) { return { begin: function () { return new dbQuery(); } } }) .factory('DbBootstrap', function ($cordovaSQLite, appConfig, $q, $state, DB) { return { wipe: function () { DB.begin().rawQuery("DELETE FROM table1").execute().then(function () { console.log("Purged records"); }); }, init: function () { var result = []; //out variable DB.begin().rawQuery("CREATE TABLE IF NOT EXISTS table1 (id integer primary key, name text)").execute(result).then(function () { console.log("Schema create returned", JSON.stringify(result)); }); var records = [ { id: 1, name:'Jim' ... }, { id: 2, name:'Bob' ... }, { id: 3, name:'John' ... } ]; for (var i = 0; i < records.length; i++) { var obj = records[i]; var result = []; DB.begin().debug(true).insert("table1", "(id,name)", "(obj.id, obj.name).execute(result).then(function () { console.log("Inserted record", JSON.stringify(obj)); }); } } }) 替代方案,请查看AsyncTaskLoadersAsyncTask基本上与AsyncTaskLoader完全相同,但它们存在于Activity或Fragment的生命周期内,因此您的代码往往不易出错。