Android 创建异步任务最简洁的方法是什么?
我需要执行一个涉及网络的非常简单的操作。我知道这必须通过异步任务来完成,因为在主线程上运行涉及网络操作的任务是不好的 因为用经典的方法是非常冗长的Android 创建异步任务最简洁的方法是什么?,android,android-asynctask,Android,Android Asynctask,我需要执行一个涉及网络的非常简单的操作。我知道这必须通过异步任务来完成,因为在主线程上运行涉及网络操作的任务是不好的 因为用经典的方法是非常冗长的 private class LongOperation extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { //to do
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
//to do
return "Executed";
}
@Override
protected void onPostExecute(String result) {
//to do
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
私有类LongOperation扩展了异步任务{
@凌驾
受保护的字符串doInBackground(字符串…参数){
//做
返回“已执行”;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//做
}
@凌驾
受保护的void onPreExecute(){}
@凌驾
受保护的void onProgressUpdate(void…值){}
}
对于只需下载少量位的方法静态方法调用
我想知道是否有更简洁的形式或替代方法可以使用。您不需要
异步任务。它只是一种方便的使用方式,因为它已经有了回调方法
您可以创建一个新的线程
并在那里执行网络调用。创建工作线程的方法有很多。这取决于你在网络上做什么
- 如果您只想执行简单的网络操作,例如下载一些JSON数据,然后将其返回到更新UI:使用
异步任务
李>
- 如果要执行长时间网络操作,其中涉及中到大量数据(上传或下载):请使用
线程
- 如果要连续向Internet发送/接收信息,请使用
HandlerThread
李>
总之:AsyncTask
已经是最简单、最容易使用的了。此外,您不需要覆盖所有方法,只要覆盖doInBackGround()
和onPostExecute()
,就可以接收数据
请参阅:您可以始终使用AsyncTask.execute(()->{/*网络操作*/})代码>,缺点是您不会得到任何回调,因此我倾向于仅在原型设计或非常简单的任务中使用此方法。在方法中使用匿名类:
public void asyncOperation () {
new AsyncTask<Task, Void, Boolean>() {
@Override
protected Boolean doInBackground(String... params) {
// Your background operation, network, database, etc
return true;
}
}.execute();
}
public void异步操作(){
新建异步任务(){
@凌驾
受保护的布尔doInBackground(字符串…参数){
//您的后台操作、网络、数据库等
返回true;
}
}.execute();
}
您不必覆盖所有这些menber函数。只有doInBackground()可以。@greenapps你是什么意思?那么你对他们有什么建议?@greenapps你看到我的结论了吗?我不能不说原因就给出建议@greenapps对于长网络操作
,如果您建议一个线程我将使用一项服务,您将需要10秒的时间打开链接并获得您的答案(即使我同意应该在答案中复制)。好的。。。服务中的线程;-)。