前言
最近在学习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