0

我正在为 Android 中的应用程序编写代码,并面临以下问题。

我必须重写一个内置函数Fragment getItem(int position)来返回图像的位图,但由于图像很大,加载需要很长时间。所以,UI 响应有点慢。为了解决这个问题,我认为可以像下面的代码一样解决。它基本上会立即返回一个空白图像,当加载真实图像时,它会返回正确的图像。

@Override
    public Fragment getItem(final int position) {
        pid = fork();  //NOT POSSIBLE / ERROR
        if (!pid)
            return  (code for empty image);
        return new ScreenSlidePageFragment(files[position].getAbsolutePath(), width, height);
    }

但是,我不知道类似于fork()Java 的函数。你能帮我解决这个问题吗,谢谢

4

3 回答 3

1

在 Java 中,您将为此使用Thread该类。但是,如果您正在为 Android 开发,您可以考虑使用AsyncTask并参考官方的 android 开发人员培训

从 UI 线程处理位图

于 2013-03-07T11:31:31.137 回答
0

在 Java 中,您无需分叉新进程,而是为此类情况打开线程。有关如何执行此操作的详细信息,请参阅此问题。

于 2013-03-07T11:17:37.557 回答
0

您可以定义一个 AsynTask 并在实现他的功能时执行类似的操作

public class imageLoader extends AsyncTask<Void, Void, Void>{

 protected preExecute(){
  //load the blank image
  //this function is executed on the UI thread
 }

 protected doInBackground(){
  //load the real one
  //that one is not executed on the UI thread
 }

 protected postExecute(){
  //set the new image 
  //this one is executed on the UI thread
 }
}
于 2013-03-07T11:28:49.697 回答