admin管理员组

文章数量:1530068

前言

最近在学习FFmpeg和音视频的相关知识,为了加强对FFmpeg的认识和了解,于是撸了一个短视频编辑软件Cut。

效果图先行:

技术点

启动页优化

但启动app的时候会有一个短暂的黑屏或者白屏。为什么呢? 是因为在App启动时,系统会执行3个Task:

1、 加载并启动app
2、在app启动后,立即展示空白的window
3、创建app进程

一旦app进程完成了第一次绘制,系统进程就会用main activity替换已经展示的background window。之后用户才可以使用app。

这个空白的window就是导致白屏或者黑屏的罪魁祸首。怎么解决呢? 1.定义透明的主题,parent中的AppTheme为APP的主题
 

<style name="Theme.AppStartLoadTranslucent" parent="AppTheme">  
       <item name="android:windowIsTranslucent">true</item>  
       <item name="android:windowNoTitle">true</item>  
   </style>  

<!-- 启动界面 -->  
        <activity  
            android:name=".ui.LaunchActivity"  
            android:launchMode="singleTask"  
            android:theme="@style/Theme.AppStartLoadTranslucent">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity> 

启动页优化原理

增量更新和全量更新

在App用了增量更新。

增量更新:增量更新是指在进行更新操作时,只更新需要改变的地方,不需要更新或者已经更新过的地方则不会重复更新,增量更新与全量更新相对。

使用的是bsdiff、 在bspatch中还会用到bzip2.
增量更新的流程:下载差分包,手机上的apk和差很包合并形成新的apk,然后再次安装。
 

  DownloadUtil.get().download(appPath, savePath, saveName,new DownloadUtil.OnDownloadListener() {
            @Override
            public void onDownloadSuccess(File file) {

                if(file != null){
                    mProgressDialog.dismiss();
                    LogUtil.e("tag", "---path = " + file.getAbsolutePath());

                    if(update_type == 1){
                        //获取当前应用的apk文件/data/app/app
                

本文标签: 编辑工具视频ffmpegCut