线程差异

时间:2014-08-13 16:28:38

标签: android multithreading google-maps

只是一个简单的问题,我在我正在制作的应用上有谷歌地图,第一个屏幕相对复杂(以后会有一个闪屏) 问题是这些之间的区别是什么:

new Thread(new Runnable() {
            public void run(){
                // we start a thread as maps can take some time to start, the app starts much faster this way
                // we do not "have" to do this but its the best option
                getActivity().runOnUiThread(new Runnable()
                {
                    //we need to run on a UI thread as they are GUI interfaces, would crash otherwise
                    public void run()
                    {
                        setUpMapIfNeeded(inflatedView);
                        CheckGPS();
                    }
                });
            }
        }).start();

选项2:

getActivity().runOnUiThread(new Runnable()
                {
                    //we need to run on a UI thread as they are GUI interfaces, would crash otherwise
                    public void run()
                    {
                        setUpMapIfNeeded(inflatedView);
                        CheckGPS();
                    }
                });

其中哪一个最好用,我的应用程序启动谷歌地图,但我希望它在一个线程中做到这一点,以确保用户拥有最佳体验,在慢速设备上加载时间稍微快一点,所以我知道&# 39; s帮助但想知道哪个是bset选项。提前致谢

1 个答案:

答案 0 :(得分:3)

您的第一个方法实际上将创建一个新线程,然后使用主UI线程来执行

setUpMapIfNeeded(inflatedView);
CheckGPS();

,第二个只是在主UI线程上完成这项工作而不创建新线程。除非你在设置地图之前做了些什么,否则第一种方法(创建一个新线程)似乎毫无意义,因为无论如何它将在主UI线程上完成。

另一方面,我建议考虑使用AsyncTask。它用于这种情况,并有一个方法在UI线程上工作,也可以在后台工作。