Android:当我打开应用程序时,它会显示一个白色屏幕几秒钟

时间:2013-09-19 05:11:53

标签: android android-loader

当我打开应用程序时,它会显示一个白色屏幕几秒钟,以启动服务和所有其他事情。

我可以使用自定义启动/加载屏幕加载器或任何其他方法来避免它吗?我可以把那些代码放在哪里?

帮助我,谢谢你...

6 个答案:

答案 0 :(得分:1)

它的发生是因为你可能在应用程序UI线程中做了一些耗时的任务。您必须使用Async或单独的线程执行该任务。

每当您尝试在应用程序的主UI线程中执行一些耗时的任务时,它总是会阻止UI。

您也可以使用Handler。与标准Java相比,Android提供了额外的构造来同时处理。您可以使用android.os.Handler类或AsyncTasks类。

AsyncTask类封装了后台进程的创建以及与主线程的同步。它还支持报告正在运行的任务的进度。

   class task extends AsyncTask<String, Integer, String> {
           @Override
    protected String doInBackground(String... params) {
             //your logic 
                 return null;
              }
            }

有关详细信息Check

答案 1 :(得分:1)

@grlsHu回答绝对正确。此外,我建议在显示第一个屏幕后启动后台任务。这可以是Apps主要活动,或者 - 如果没有数据和内容就没有意义 - 一个闪屏。相比之下,如果你太早启动后台,它会同时运行到UI线程并显示第一个屏幕仍然需要很长时间。

这意味着:

  • 按照@grlsHu。
  • 的建议,使用AsyncTask将启动任务放在一个单独的线程中
  • 创建一个活动,可以在没有应用程序其余部分的数据或内容的情况下显示。 (溅射屏幕)
  • 在Manifest中,将Splashscreen作为启动它。
  • 在Splashscreen的onResume()结束时,使用AsyncTask.execute(...)启动后台任务。
  • 在使用AsyncTask.onPostExecute()完成Splashscreen的AsyncTask结束时,启动应用的主要活动。

通过这种方法,您应该对用户做出直接反应,并开始启动所有服务。

答案 2 :(得分:1)

看这个How to avoid black screen in android while my app is loading? 这给了我一个创建像flash这样的自定义主题的想法,它解决了我的问题。对于那些正在寻找相同答案的人来说,这就是我的工作方式。这对我有用,希望它能帮到你们。在style.xml。

   <style name="MySplashTheme" parent="AppBaseTheme">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@drawable/splash_image</item>
   </style>

活动代码中的清单文件:

android:theme="@style/MySplashTheme"

这不是正确的解决方案,正确的解决方案是使用异步任务或处理程序。并在单独的线程中做事。

答案 3 :(得分:1)

这有助于您将其放入style.xml

this

答案 4 :(得分:0)

您可以在oncreate应用方法中添加loader(在线程中)。

答案 5 :(得分:0)

是的,实际上它与您的应用程序之外的启动器活动有关。

如果你没有在你的应用程序类中做任何事情(顺便说一句,如果你这样做,那么其他答案可能对你有用),那么你应该考虑使用一个比你的启动器活动更轻的启动活动,比如只有后台进度或其他东西,所以加载该屏幕会更容易。

或者您也可以在样式中设置windowBackground,因此它将至少显示您的背景,直到应用程序加载而不是白屏。