我看到以下两个 Gradle 插件在项目中可以互换使用:
plugins {
id("kotlin-android")
}
Run Code Online (Sandbox Code Playgroud)
plugins {
id("org.jetbrains.kotlin.android")
}
Run Code Online (Sandbox Code Playgroud)
它们是一样的吗?
我做了一些编码来测试特定用例的 Thread.UncaughtExceptionHandler (如下所述)。
首先,我有一个BaseActivity这样实现的方法。
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
Log.e("CRASH_REPORT", "Activity crashed!");
System.exit(0);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
通过扩展BaseActivity,任何未捕获的异常最终都会被处理程序捕获。System.exit(0)将终止VM属于该应用程序的
现在,我使用此层次结构创建了 2 个活动(均扩展BaseActivity)。
父活动 -> 子活动
在 中ParentActivity,我只有 1 个将SubActivity在单击时启动的按钮(代码省略)。
在 中SubActivity.onCreate(...),我故意注入一个异常来触发uncaughtException(...)。
public class SubActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); …Run Code Online (Sandbox Code Playgroud)