App怎么做才能永不崩溃,字节跳动Android架构师学习笔记

2021-02-04 17:10:28.112 22307-22307/com.ted.nocrash D/timeStatistics: tryCrash:289

通过日志可以非常明显的得出两个结论

    1. 无异常时,有try与无try影响不大,都是0毫秒。
    1. 有异常时候性能下降了289 倍

当然,以上测试为极端情况,目的是放大问题,直面问题,所以以后try catch要尽可能的缩小作用域。


异常日志要怎么收集呢?

这个问题在本文开头已经给出了答案,可以通过继承Thread.UncaughtExceptionHandler并重写uncaughtException()实现日志收集。 注意:需要在Application调用初始化

class MyCrashHandler : Thread.UncaughtExceptionHandler {

override fun uncaughtException(t: Thread, e: Throwable) {

Log.e(“e”, “Exception:” + e.message);

}

fun init() {

Thread.setDefaultUncaughtExceptionHandler(this)

}

}

此时可以在uncaughtException()方法中做日志收集和上传工作。


为什么出现异常了,程序会停止运行呢?

这个问题需要了解下Android 的异常处理机制,在我们未设置Thread.UncaughtExceptionHandler之前,系统会默认设置一个,具体我们参考下ZygoteInit.zygoteInit()

public static final Runnable zygoteInit(int targetSdkVersion, long[] disabledCompatChanges,

String[] argv, ClassLoader classLoader) {

if (RuntimeInit.DEBUG) {

Slog.d(RuntimeInit.TAG, “RuntimeInit: Starting application from zygote”);

}

Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, “ZygoteInit”);

RuntimeInit.redirectLogStreams();

RuntimeInit.commonIni

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Android Studio开发一个笔记应用是非常简单的。首先,我们需要创建一个新的Android项目。在创建项目过程中,我们可以选择所需的最低Android版本和项目名称。 完成项目创建后,我们可以开始设计应用的用户界面。我们可以使用布局编辑器来创建应用界面。可以选择使用LinearLayout、RelativeLayout或ConstraintLayout等布局类型来安排界面中的各个组件。 接下来,我们需要添加适当的组件来实现笔记应用所需的功能。例如,我们可以添加一个EditText组件来允许用户输入笔记内容,添加一个Button组件来保存笔记,并添加一个RecyclerView组件来显示已保存的笔记列表。 在代码方面,我们需要处理用户的输入和按钮点击事件。当用户点击保存按钮时,我们可以将笔记内容保存到数据库或本地文件中。当用户再次打开应用时,我们可以从数据库或本地文件读取已保存的笔记,并显示在列表中。 为了更好地管理笔记列表,我们可以创建一个自定义的适配器类,用于管理RecyclerView中的数据和布局。适配器可以继承RecyclerView.Adapter类,并覆盖必要的方法来处理数据的增删改查操作。 最后,我们可以进行一些美化和优化的工作。例如,我们可以为应用添加主题、图标和背景图片来增加应用的吸引力。我们还可以对应用进行性能优化,例如使用异步任务处理数据库操作等。 总之,使用Android Studio开发一个笔记应用是一个相对简单的过程。在了解Android开发的基本知识后,我们可以使用Android Studio的各种工具和组件来创建一个功能齐全且美观的笔记应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值