alibaba / alibaba/flutter_boost
[featurePR]修复Android在FlutterBoost.getInstance().currentActivity 在引擎懒加载打开页面时存在为null情况
- Dominant language
- Dart
- Stars
- 7.2k
- Forks
- 1.3k
- PR merge metrics
- No merged PRs in 30d
Description
**问题描述:**
FlutterBoost.getInstance().currentActivity 在引擎懒加载打开页面时存在为null情况,导致Flutter页面点击跳转无反应.
**问题出现原因:**
FlutterBoost.getInstance().currentActivity依赖于引擎初始化时注册Application的BoostActivityLifecycle监听,由于是引擎懒加载初始化,此时当前含有Flutter的Activity已经走完了onCreate,onResume生命周期(比如Activity Tab嵌套FlutterFragment形式),Application的BoostActivityLifecycle监听晚于注册,导致topActivity并没有记录当前Activity, 所以topActivity为null.
**解决方案:**
可以做个补偿,如果FlutterBoost.getInstance().currentActivity,再通过FlutterContainerManager获取topContainer,再通过topContainer获取当前的context activity即可。
**修复code:**
```
public Activity currentActivity() {
if (topActivity != null) {
return topActivity;
}
FlutterViewContainer topActivityContainer = FlutterContainerManager.instance().getTopActivityContainer();
if (topActivityContainer != null) {
return topActivityContainer.getContextActivity();
}
FlutterViewContainer topContainer = FlutterContainerManager.instance().getTopContainer();
if (topContainer != null) {
return topContainer.getContextActivity();
}
return topActivity;
}
```
Contributor guide
No contributing guide indexed for this repository
Research direction
Start at FlutterBoost.getInstance().currentActivity() and trace FlutterContainerManager.instance(), including getTopActivityContainer() and getTopContainer(). Confirm the lazy-engine case where topActivity is null, then verify that the method returns the current context Activity from the available top container and preserves the existing fallback behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, java
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100