分享优化uniapp安卓端从点击app图标到显示启动页需要1-2秒延迟、卡顿的问题

本人原创链接:https://ask.dcloud.net.cn/article/39413

这几天开始接触uniapp开发,发现官方demo安卓端点击app图标到显示启动页(Hbuildx图标页)会卡个1-2秒

明显比原生app体验差很多,作为一个强迫症,这点当然是不能忍的。具体问题详情查看以下链接:

https://ask.dcloud.net.cn/question/133649?notification_id-987295rf-falseitem_id-177937#!answer_177937

先说下大概为什么卡顿的原因,我也不太明白,我猜是因为启动安卓app时需要启动webview或者weex等底层引擎导致的卡顿。(这个问题望官方的人可以解答一下,我看了PandoraEntry的源码也没有找到答案

下面说一下优化原理,就是用原生安卓代码先启动一个页面,然后在该页面中再启动uni的主activity(PandoraEntry)

这样,点击app图标后,就跟原生一样会立马显示我们原生开发的第一个页面(而不会卡个1、2秒才显示界面,让人感觉以为自己没点击图标成功)

下面说下流程

一、在AS中新建一个empty activity:菜单file->new->activity->empty activity。

界面xml代码:

```

    xmlns:app="http://schemas.android.com/apk/res-auto" 

    xmlns:tools="http://schemas.android.com/tools" 

    android:layout_width="match_parent" 

    android:layout_height="match_parent" 

    tools:context="com.xiefeng.MainActivity"> 

```

没什么东西,就是一个空白页面

java代码如下:

package com.xiefeng;

import androidx.appcompat.app.AppCompatActivity; 

import android.content.Intent; 

import android.os.Bundle; 

import com.android.simple.R; 

import io.dcloud.PandoraEntry; 

public class MainActivity extends AppCompatActivity { 

    @Override 

    protected void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.activity_main); 

        Thread myThread=new Thread(){//创建子线程,启动uni的主activity 

            @Override 

            public void run() { 

                try{ 

                    sleep(1000);//使程序休眠五秒 

                    Intent it=new Intent(MainActivity.this, PandoraEntry.class);//启动MainActivity 

                    startActivity(it); 

                    finish();//关闭当前活动 

                }catch (Exception e){ 

                    e.printStackTrace(); 

                } 

            } 

        }; 

        myThread.start();//启动线程 

    } 

}

二、AndroidManifest.xml修改:

1、在android节点加上主题android:theme="@style/AppTheme2"

2、新增我们自定义的activity并设为main

3、将uni的主activity的main注释掉

完整代码如下:

                     

    package="com.android.simple"> 

   

        android:allowBackup="true" 

        android:allowClearUserData="true" 

        android:icon="@drawable/icon" 

        android:label="@string/app_name" 

        android:largeHeap="true" 

        android:supportsRtl="true" 

        android:theme="@style/AppTheme2"> 

         

             

                 

                 

             

         

       

            android:name="io.dcloud.PandoraEntry" 

            android:configChanges="orientation|keyboardHidden|keyboard|navigation" 

            android:hardwareAccelerated="true" 

            android:label="@string/app_name" 

            android:launchMode="singleTask" 

            android:screenOrientation="user" 

            android:theme="@style/TranslucentTheme" 

            android:windowSoftInputMode="adjustResize"> 

             

         

       

            android:name="io.dcloud.PandoraEntryActivity" 

            android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard|smallestScreenSize|screenLayout|screenSize" 

            android:hardwareAccelerated="true" 

            android:launchMode="singleTask" 

            android:permission="com.miui.securitycenter.permission.AppPermissionsEditor" 

            android:screenOrientation="user" 

            android:theme="@style/DCloudTheme" 

            android:windowSoftInputMode="adjustResize"> 

             

                 

                 

                 

                 

             

         

       

            android:name="io.dcloud.common.util.DCloud_FileProvider" 

            android:authorities="com.android.simple.dc.fileprovider" 

            android:exported="false" 

            android:grantUriPermissions="true"> 

           

                android:name="android.support.FILE_PROVIDER_PATHS" 

                android:resource="@xml/dcloud_file_provider" /> 

         

       

            android:name="dcloud_appkey" 

            android:value="69ae588821d34380d31b94dd33dc0689" /> 

     

                                                                                                                                                        -->                                                                                                                                                                                     

三、最后在values/styles.xml加上主题:

如果要加上自己的启动图片,可以加上节点:@drawable/splash,并把图片放到drawable文件夹下。

建议原生启动图和Hbuildx设置的启动图为同一张,这样两张启动图无缝对接,体验比较好。

(注:加上启动图后启动会更慢个0.1秒不知道为什么,希望大神们解答一下)

完毕。

你可能感兴趣的:(分享优化uniapp安卓端从点击app图标到显示启动页需要1-2秒延迟、卡顿的问题)