我正在开发一个应用程序,在那里我从画廊加载图像。我看到我的GUI有点冻结,并有一条消息说 "跳过了53帧。你的应用程序可能在其主线程中做了巨大的工作 "类似的东西。经过一点研究,我发现这是一个常见的问题,可以使用Async task等来解决。我在我的主活动中定义了一个方法,我在我的活动一开始就调用那个方法,那个方法一定在做大量的工作。我想在一个Async任务中或在一个并行线程中调用该方法,该线程将与我的主线程并行运行,在它完成之前,我想在我的GUI上显示一个带有 "处理...... "文字的消息框。我怎样才能做到这一点。我在方法调用中没有传递任何参数给方法,也没有从该方法中返回任何东西。
如果你使用Java,你可以使用RxJava,如果你使用Kotlin,你可以使用Coroutines,它们是目前最理想的解决方案。但如果你仍然想使用Async任务,这里有一个方法。
创建一个像这样的内部类。
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();