![](/img/trans.png)
[英]Calling superclass method AsyncTask.execute() on anonymous object new HttpRequestTask<…> extends AsyncTask<…>
[英]Android: override onPostExecute() if AsyncTask.execute(new Runnable()) is invoked in a method
我有一个要在后台线程上执行的方法:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
foo();
}
public static void foo(){
AsyncTask.execute(() -> {
// perform some object creations
});
}
public static void foo2(){
// Method that updates UI (lists and views) which requires the main thread.
}
}
我想在AsynTask
完成时执行foo2
,即onPostExecute()
。 在这种情况下,如何覆盖onPostExecute()
?
不能直接实现,可以通过扩展Async类来实现。
这可能会有所帮助,您可以通过类而不是方法来实现这一点。 请尝试以下代码段:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
foo asyncTask=new foo();
asyncTask.execute();
}
private class foo extends AsyncTask<void, void, void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void doInBackground(String... strings) {
}
@Override
protected void onPostExecute() {
super.onPostExecute();
foo2 asyncTask=new foo2();
asyncTask.execute();
}
}
private class foo2 extends AsyncTask<void, void, void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void doInBackground(String... strings) {
}
@Override
protected void onPostExecute() {
super.onPostExecute();
}
}
这对我有用
public class MyTask extends AsyncTask<String, Void, String>
{
@Override
protected Void doInBackground(String... params) {
//Do background
}
protected void onPostExecute() {
foo2();
}
}
void foo2(){
//your function
}
如果您想在 Asynctask 完成后执行某些功能,您还可以从 onPostExecute 中更新 UI,如果它适合您,这会更简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.