如何解决从父级杀死子级活动
A. BC |。 |。 | 主要活动 带回调的蓝牙例程
MainActivity 对我有两个目的:
- 管理蓝牙 BLE 系统调用,包括在开始扫描时系统调用的“CallBack”函数:bleScanner.startScan(filters,scanSettings,scanCallback)
- 充当“交通警察”或“控制者”,用户可以看到 A、B 或 C 的活动。
A、B、C 总是从 MainActivity 开始,例如:
startActivityForResult <Act A> (1)
A、B、C 总是以类似的方式结束:
setResult(9996,意图) 完成()
A、B、C 永远不会同时居住。
因此,假设 A 处于活动状态,并且 TextView 填充了在 CallBack 中获得的数据,并且每当有新数据传入时都需要刷新。进出 A、B、C 的所有良好移动,直到发生 CallBack。系统立即跳转到 MainActivity 中的 CallBack 方法,没有正常的生命周期调用(onPause、onExit 等),A 留在堆栈中。
我想有一种方法在回调之后从 MainActivity 杀死 A 并重新开始。我尝试了各种方法,例如:
((Activity) Class.forName(className).newInstance()).finish();
努力达到顶峰:
val am = this.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
val taskInfo = am.getRunningTasks(1)
val componentInfo = taskInfo[0].topActivity
val Actvity_Name = taskInfo[0].topActivity?.className
val PKG_Name = componentInfo?.packageName
然后尝试用各种技术杀死 Activity_Name 没有成功。
我希望能帮助您解决这个问题。
解决方法
- 检查 onNewIntent 是否适合您:
https://developer.android.com/reference/android/app/Activity#onNewIntent(android.content.Intent)
问题是活动应该是特定类型。您还需要知道哪个是活动的才能调用它。
- 所以也许您可以使用在 A、B、C 活动中注册的 BroadcastReceiver 来实现。您可以从 MainActivity 发送广播,它上面的任何活动都可以自行完成:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。