[英]When I open my flutter app it always shows Sign In screen for few seconds, even if I already signed In in my last session. And after that Main page?
[英]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線程並顯示第一個屏幕仍然需要很長時間。
這意味着:
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.