如何在活动切换时显示进度条

4
我有两个活动 Activity1 和 Activity2。当点击按钮时,我会从Activity1切换到Activity2。但由于网络速度缓慢,Activity2需要很长时间才能加载。在活动加载完成之前只显示一个空屏幕。
为了避免黑屏状态,我想显示进度条,并在Activity2准备好后关闭进度条,以免让用户感到沮丧。
我不知道怎样去做或开始这项任务,因为我是Android的新手。请帮助我提供一些建议,或者分享关于这方面的任何链接!!
提前致谢!!

我会更加专注于修复第二个活动。使用Traceview和类似的技术来确定导致其运行时间过长的原因。 - CommonsWare
@CommonsWare,Activity2 加载谷歌地图。地图加载需要一些时间。因此,我想在地图完全加载之前显示进度条!这是我的想法。但是不知道如何实现它!! - Mahe
我不知道这是否可能,因为你无法确定“地图何时完全加载”。 - CommonsWare
3个回答

1
你可以在activity 2的onCreate中使用AsyncTask。在onPreExecute中显示progressdialog。在onDoinBackground中完成下载。完成后,在onPostExecute中隐藏progressdialog并在UI中显示内容。
例如代码:
private class YourTask extends AsyncTask<Void, Void, ContentType> {
    protected void onPreExecute() {
        //show progressdialog here
    }

         protected ContentType doInBackground() {
             // download content
             return content;
         }


         protected void onPostExecute(ContentType content) {
             // hide progress dialog
              // show the content
         }
     }

1
你能告诉我用于ContentType的导入应该是什么吗? - user6602265
ContentType是什么? - Real KEK

0

在Activity2中使用加载屏幕(不确定进度条或圆形进度条都可以),或者更好的方法是:使用缓存数据,并将重要的内容放在一个线程中。

在线程结束时,移除进度条并显示数据。

有了这个想法,Activity2将会非常快速地启动,并且您可以在数据加载期间显示任何您想要的内容。

使用线程可以避免出现黑屏。

public class Activity2 extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        new Thread(new Runnable() { 
            public void run(){
               //All your heavy stuff here!!!
            }
        }).start();
    }
}

注意:您也可以选择使用AsyncTask,您可以在这里看到不同实现方式之间的巨大比较。

http://techtej.blogspot.be/2011/03/android-thread-constructspart-4.html


这个想法很好!您能分享一些相关链接吗?谢谢! - Mahe

0

ASyncTask 就是你要找的,实现起来不应该很难。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接