Android - InternalSyntheticLambda onChanged$bridge crash是由于数据更新时触发的,但是在当前屏幕中找不到相关的UI导致的崩溃。 这通常发生在订阅LiveData或RxJava时,因为它们通常在后台线程中工作并尝试更新UI。
一种解决方法是在更新UI之前检查当前Activity是否已死。使用以下代码来检查:
if (!isFinishing()){ //更新UI操作 }
如果Activity已经被销毁了,就不再进行更新操作。
另一种解决方法是在页面之间跳转时使用Intent的FLAG_ACTIVITY_CLEAR_TOP标志。 这将关闭当前Activity之上的所有Activity,从而避免在非当前屏幕中更新UI导致的崩溃。 例如:
Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);
这样做可以确保任何非当前屏幕中的UI更新都被正确地处理,从而避免崩溃。