使用Async任务来调用用户定义的方法。

问题描述 投票:0回答:1

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

android android-asynctask
1个回答
0
投票

如果你使用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();
© www.soinside.com 2019 - 2024. All rights reserved.