从父级杀死子级 Activity
Kill Child Activity from parent
一个。公元前
|。 |。 |
主要Activity
带有回调的蓝牙例程
MainActivity 对我有两个用途:
- 管理蓝牙 BLE 系统调用,包括系统在扫描开始时调用的“回调”函数:bleScanner.startScan(filters, scanSettings, scanCallback)
- 充当“交通警察”或“管制员”,activity 用户看到的是 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留在栈中。
我希望有一种方法可以在 CallBack 之后从 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)
问题是 activity 应该是特定类型。您还需要知道哪个是活动的才能调用它。
- 所以也许您可以使用在 A、B、C 活动中注册的 BroadcastReceiver 来完成。您可以从 MainActivity 发送广播,并且它上面的任何 activity 处于活动状态,它都可以自行完成:
一个。公元前 |。 |。 | 主要Activity 带有回调的蓝牙例程
MainActivity 对我有两个用途:
- 管理蓝牙 BLE 系统调用,包括系统在扫描开始时调用的“回调”函数:bleScanner.startScan(filters, scanSettings, scanCallback)
- 充当“交通警察”或“管制员”,activity 用户看到的是 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留在栈中。
我希望有一种方法可以在 CallBack 之后从 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)
问题是 activity 应该是特定类型。您还需要知道哪个是活动的才能调用它。
- 所以也许您可以使用在 A、B、C 活动中注册的 BroadcastReceiver 来完成。您可以从 MainActivity 发送广播,并且它上面的任何 activity 处于活动状态,它都可以自行完成: