簡體   English   中英

Android:當我打開應用程序時,它會顯示一個白色屏幕幾秒鍾

[英]Android : When I open the app it shows a white screen for a few seconds

當我打開應用程序時,它顯示一個白色屏幕幾秒鍾,以啟動服務和所有其他事情。

我可以通過使用自定義啟動/加載屏幕加載器或任何其他方法來避免它嗎? 我可以把代碼放在哪里?

幫幫我,謝謝提前..

它的發生可能是因為你在應用程序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; } } 

有關詳細信息, 請檢查

@grlsHu回答絕對正確。 此外,我建議在顯示第一個屏幕后啟動后台任務。 這可以是Apps主要活動,或者 - 如果沒有數據和內容就沒有意義 - 一個閃屏。 相比之下,如果您過早地啟動背景,它將同時運行到UI線程並顯示第一個屏幕仍然需要很長時間。

這意味着:

  • 按照@grlsHu的建議,使用AsyncTask將啟動任務放在一個單獨的線程中。
  • 創建一個活動,可以在沒有應用程序其余部分的數據或內容的情況下顯示。 (濺射屏幕)
  • 在Manifest中,將Splashscreen作為啟動畫面。
  • 在Splashscreen的onResume()結束時,使用AsyncTask.execute(...)啟動后台任務。
  • 在使用AsyncTask.onPostExecute()的AsyncTask結束時,啟動Splashscreen,啟動應用程序的主Activity。

使用這種方法,您應該對用戶有直接的反應並啟動所有服務。

看看這個如何在我的應用程序加載時避免Android中的黑屏? 這給了我一個創建像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"

那么這不是正確的解決方案,正確的解決方案是使用異步任務或處理程序。 並在單獨的線程中做事。

這將有助於您將它放在style.xml中

<item name="android:windowDisablePreview">true</item>

您可以在oncreate方法中添加loader(在線程中)。

是的,實際上它是關於你的應用程序以外的啟動器活動。

如果你沒有在你的應用程序類中做任何事情(順便說一句,如果你這樣做,那么其他答案可能對你有用),那么你應該考慮使用一個比你的啟動器活動更輕的啟動活動,比如只有背景進度或其他東西,以便加載該屏幕會更容易。

或者您也可以在樣式中設置windowBackground,因此它將至少顯示您的背景,直到應用程序加載而不是白屏。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM