android - 安卓应用冷启动如何避免开机白屏?
黄舟
黄舟 2017-04-18 09:16:42
0
5
780

我一直以为只要在 application的theme下设置background就好了,(同类型解决方法还有设置为透明)
但是今天在实际测试中发现,
在oppo m37a 上是有效果的(api 22)
但是在红米4 上发现是没有效果的!(api23)

我尝试打开红米4上多款应用发现:

  • 瞬间打开且没有白屏

    1. 高德地图

    2. 掘金

    3. segmentfault

    4. 手机淘宝

    5. 印象笔记

    6. 等。。。

  • 有白屏

    1. 知乎日报

    2. 扇贝单词

    3. 人民日报

    4. 摩拜单车

  • 没有白屏,但是点击icon 会延迟一会才打开

    1. 简书

    2. UC浏览器

    3. 支付宝

    如果是白屏或者是“延迟打开”,我觉得可以办到

那要怎样才能做到segmentfault ,手机淘宝这样呢?

启动第一个activity,这个activity 只是为了作为背景显示,把一些初始化的工作放到第2个activity中?
这样的话做法好奇怪啊?应该有什么更直接的方案吧?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(5)
巴扎黑

background を設定したい場合は、それを実装するために 2 つのアクティビティは必要ありません。アプリケーションまたはメイン アクティビティも同様に実行している可能性があります。メインスレッドの作業が多くなります。 windowBackground

いいねを押す +0
左手右手慢动作

スタートアップを透明に設定し、次のコードをテーマ ファイルに追加します

リーリー
いいねを押す +0
PHPzhong

<style name="welcomeTheme"parent="AppTheme">

リーリー

テーマを設定し、ここに引用します
<アクティビティ

リーリー
いいねを押す +0
巴扎黑

アプリケーションであまりにも多くの作業を行う必要がある場合は、メインプロセスの開始時にセカンダリプロセスがスクリーンセーバーインターフェイスを開始する役割を担い、マルチプロセスモードを通じてプロセスごとに開始できる簡単な方法があります。メイン プロセスが初期化を完了すると、セカンダリ プロセスが終了し、メイン プロセス インターフェイスが開始されます。これにより、アプリケーションの過剰な初期化によって引き起こされる初期起動が遅すぎる問題が回避されます。

いいねを押す +0
左手右手慢动作

まず、白い画面が白い理由を明確にしてから、独自のビジネス コードに従って変更します。
デスクトップ アイコンをクリックすると、アクティビティが作成される前に、アプリの最初のアクティビティが開きます。アプリケーションが作成される可能性があります。実際に最初のページが表示されるのは、Activity の onResume が実行された後です。その前は、白い画面の時間として理解できます (テーマを変更するための黒いテクノロジの使用は考慮されていません)。これらのプロセスに費やされる時間を短縮することを意味します。単純かつ粗雑な方法は、これらの依存パッケージの初期化をスプラッシュ ページに配置し、onResume
の後に実行することです。私はとても面倒なので入力したくありません。 ..
実際には、初期化だけで数百ミリ秒かかるなど、より実用的な判断を追加する必要があります。スプラッシュ ページがない場合は、ホームページに初期化を配置し、初期化後に他の操作を実行できます。別の例として、初期化を繰り返す場合、静的変数を追加して初期化済みかどうかをマークできます。
概要は次のとおりです。最適化のために、最初のアクティビティの onResume までの時間を占める場所を見つけます (画像の解析、レイアウトのレンダリングなども可能です)

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート