针对特定活动的具体AsyncTask是什么?或者我可以说一个RESTful APIManager,它调用四个AsyncTask类之一,APIGET APIPOST APIPUT APIDELETE并能够以这种方式处理网络代码吗?我的想法是能够在我的UI代码中调用这样的东西。
<edit> Class UserPrefs;
APIManager.createUser(JSONObject info);
APIManager.createUser {
// handle info
APIPost newPost = new APIPost(info);
}
APIPost extends AsyncTask {
doInBackground {
//network code
<edit> UserPrefs.save(result);
}
}
这种模式可以吗?或者我在滥用AsyncTask?
答案 0 :(得分:0)
AsyncTasks非常适合RESTful服务,但它们与活动的生命周期无关。您可以创建并启动Async任务,但是当任务完成其后台工作并调用onPostExecute时,内存中不再存在原始活动。因此,您应该有一个更好的计划来存储本地数据,而不是将其保存在Activity成员中,它可以经常消失。为避免颠簸,您应该将数据保存在某处。保存本地数据的候选者是SharedPreferences,文件系统,数据库或Application单例对象,具体取决于数据和应用程序的性质。
答案 1 :(得分:0)
您可以使用ExecutorService,AsyncTasks在内部使用它。非常容易使用。