我需要执行一个涉及网络的非常简单的操作。我知道这必须使用异步任务来完成,因为在主线程上运行涉及网络操作的任务是不好的。
因为使用经典方式非常冗长
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) {}
}
用于必须仅下载少量位的方法静态方法调用
我想知道是否有更简洁的形式或替代品我可以使用。
答案 0 :(得分:1)
您不需要AsyncTask
。这只是一个方便使用,因为它已经有回调方法。
您可以创建新的Thread
并在那里执行您的网络电话。
答案 1 :(得分:1)
创建工作线程的方法有很多种。这取决于你在网络上做了什么。
AsyncTask
。 Thread
。HandlerThread
。 总而言之:AsyncTask
已经是最简单,最简单的。此外,您不需要覆盖所有方法,只需覆盖doInBackGround()
和onPostExecute()
,如果您想要接收数据。
答案 2 :(得分:0)
你总是可以使用AsyncTask.execute(() -> { /* network operations */ });
,缺点是你没有得到任何回调,所以我倾向于只在原型设计或非常简单任务时使用它。 / p>
答案 3 :(得分:0)
在方法中使用匿名类:
public void asyncOperation () {
new AsyncTask<Task, Void, Boolean>() {
@Override
protected Boolean doInBackground(String... params) {
// Your background operation, network, database, etc
return true;
}
}.execute();
}