一、缩短应用程序启动时间
1、尽量避免在应用程序启动时进行耗时操作。可以将这些操作放到应用程序已启动的情况下再进行。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在增加这个之前是有Activity的默认动画的,
// 加上后Activity进入时没有任何动画效果,
// 而退出时有返回效果(比如页面缩小渐隐)。
overridePendingTransition(0, 0);
setContentView(R.layout.activity_main);
//...在此进行其他操作
}
}
2、启动窗口主题的优化
true
@android:color/transparent
@null
true
true
true
二、提高应用程序稳定性
1、捕捉异常并上报
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 捕获全局异常
Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler);
}
/**
* 全局异常捕获
*/
private Thread.UncaughtExceptionHandler uncaughtExceptionHandler = (thread, throwable) -> {
LogUtil.e("捕获全局异常", throwable);
// Now send the crash to your server or save it to your preferred location, something like,
// MyAppClass.sendCrashToServer(throwable);
};
}
2、使用Crashlytics进行崩溃上报
// 在Application中初始化
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 初始化Crashlytics
if (!BuildConfig.DEBUG) {
Fabric.with(this, new Crashlytics());
Crashlytics.setUserIdentifier("user-identifier");
}
}
}
// 在出现异常处添加以下代码
Crashlytics.logException(Throwable);
三、提升界面交互体验
1、交互反馈优化
// 使用Snackbar显示提示信息
public class MainActivity extends AppCompatActivity {
private View mainView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainView = findViewById(R.id.main_view);
}
private void showMsg(String msg) {
Snackbar.make(mainView, Html.escapeHtml(msg), Snackbar.LENGTH_LONG).show();
}
}
// 使用Dialog显示提示信息
public void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(Html.escapeHtml(title))
.setMessage(Html.escapeHtml(msg))
.setPositiveButton("确定", null)
.create()
.show();
}
// 使用Toast显示提示信息
public void showToast(String msg) {
Toast.makeText(context, Html.escapeHtml(msg), Toast.LENGTH_SHORT).show();
}
2、手势和动画
// 启用手势返回
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 启用手势返回
supportFinishAfterTransition();
}
}
// 实现界面过渡动画
// 在Activity A中跳转到Activity B时,设置Activity A的退出和Activity B的进入动画如下
startActivity(intent);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
3、布局优化
使用ConstraintLayout进行布局优化,减少嵌套层级
四、提高应用程序安全性
1、禁用http请求,强制使用https
...
2、防止构建 APK 时出现 AndroidManifest.xml 映射攻击
...
...
3、禁用调试模式和Android日志
if(BuildConfig.DEBUG) {
android.os.Debug.waitForDebugger();
}
Log.d("TAG", "message");
五、减少应用程序体积大小
1、使用webp图片格式
WebP是一种可以包含有损压缩和无损压缩的图像格式。和JPEG相比,WebP有更好的压缩效率,可以减少图片在应用程序中的大小便于快速加载。
2、混淆代码
混淆是一种通过代码优化、删除无用代码、代码打乱等方式降低代码容易被恶意反编译破解的过程。在打包apk时对代码进行混淆即可以减少apk的体积大小。
3、使用App Bundle打包方式
在使用App Bundle打包方式时,Google Play商店会在应用程序低流量时只会下载部分代码,是apk包更加高效,同时也减少了apk的体积。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/197102.html
微信扫一扫
支付宝扫一扫