使用异步任务调用用户定义的方法
Using Async task for calling user defined method
我正在开发一个应用程序,我可以在其中加载图库中的图像。我看到我的 GUI 冻结了一点,并且有一条消息说 "Skipped 53 frames. Your app might be doing huge work in its main thread" 类似的东西。经过一些研究,我发现这是一个常见问题,可以使用异步任务等解决。我在我的 main activity 中定义了一个方法,我在 activity,那个方法一定做了很多工作。我想在异步任务或并行线程上调用该方法,该线程将 运行 与我的主线程并行,直到它完成我想在我的 GUI 上显示一个带有文本 "processing...." 的消息框.我怎样才能做到这一点。我没有在方法调用中向该方法传递任何参数,也没有从该方法返回任何内容。
如果你使用Java你可以使用RxJava,如果你使用Kotlin,你可以使用Coroutines,它们是目前最优的解决方案。但是如果你仍然想使用异步任务,这里是方法。
像这样创建一个内部 class,
private class AsyncTaskExample extends AsyncTask<null, null, null> {
@Override
protected void onPreExecute() {
super.onPreExecute();
//show progress bar or any
thing you want to do before starting the process
}
@Override
protected void doInBackground() {
//your code that gets the images from gallery
}
@Override
protected void onPostExecute() {
super.onPostExecute();
// use this callback for if you want to stop showing the progress bar or anything that you want to do after the executing your code in Backgroud
}
}
}
然后在您想要执行代码时通过执行此操作来调用它,
AsyncTaskExample asyncTask=new AsyncTaskExample();
asyncTask.execute();
我正在开发一个应用程序,我可以在其中加载图库中的图像。我看到我的 GUI 冻结了一点,并且有一条消息说 "Skipped 53 frames. Your app might be doing huge work in its main thread" 类似的东西。经过一些研究,我发现这是一个常见问题,可以使用异步任务等解决。我在我的 main activity 中定义了一个方法,我在 activity,那个方法一定做了很多工作。我想在异步任务或并行线程上调用该方法,该线程将 运行 与我的主线程并行,直到它完成我想在我的 GUI 上显示一个带有文本 "processing...." 的消息框.我怎样才能做到这一点。我没有在方法调用中向该方法传递任何参数,也没有从该方法返回任何内容。
如果你使用Java你可以使用RxJava,如果你使用Kotlin,你可以使用Coroutines,它们是目前最优的解决方案。但是如果你仍然想使用异步任务,这里是方法。
像这样创建一个内部 class,
private class AsyncTaskExample extends AsyncTask<null, null, null> {
@Override
protected void onPreExecute() {
super.onPreExecute();
//show progress bar or any
thing you want to do before starting the process
}
@Override
protected void doInBackground() {
//your code that gets the images from gallery
}
@Override
protected void onPostExecute() {
super.onPostExecute();
// use this callback for if you want to stop showing the progress bar or anything that you want to do after the executing your code in Backgroud
}
} }
然后在您想要执行代码时通过执行此操作来调用它,
AsyncTaskExample asyncTask=new AsyncTaskExample();
asyncTask.execute();