所以,我有一个问题!
我有一个名为 X 的活动。当用户单击按钮时,将显示活动 Y。我希望在收到活动 X 发送的事件后可以关闭此活动。
你知道我该怎么做吗?
BroadcastMessage
从 X发送 a 。在 yBroadcastReceiver
中用相同的 注册 a IntentFilter
。因此,您可以从 x 发送预定义的退出消息,该消息将被 y 活动的onReceive
方法捕获。在那里你可以结束活动 Y。
例如:
在 Y 活动中
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
if (extras.containsKey("exit")) {
finish();
}
}
}
不要忘记注册接收器
registerReceiver(
mMessageReceiver,
new IntentFilter(Constants.YOUR_INTENT_FILTER));
并注销
unregisterReceiver( mMessageReceiver);
IN X 活动:
send the broadcastmessage using `sendBroadcast(Intent i)`
对于这种内部消息,我更喜欢LocalBoradcastManager
不幸的是,您不能同时“运行”两个活动。当您启动 Activity Y 时,Activity X 将结束其生命周期。
请参阅:http: //developer.android.com/guide/components/activities.html
每次新活动开始时,前一个活动都会停止,但系统会将活动保存在堆栈(“后堆栈”)中。当一个新的活动开始时,它被推到后台堆栈并获得用户关注。后退堆栈遵循基本的“后进先出”堆栈机制,因此,当用户完成当前活动并按下后退按钮时,它会从堆栈中弹出(并销毁)并恢复之前的活动。(Back stack 在 Tasks and Back Stack 文档中有更多讨论。)
BroadcastMessage
从那时起,您可以ActivityX
设置一个 Global 的值boolean
Activity Y
您应该在使用(可能在onCreate
)时检查该布尔值Activity Y
如果你得到这个布尔值true
(或者你在调用时设置的任何值BroadcastMessage
),那么只需调用finish()
问题是android没有同时运行两个活动,所以没有活动你不能远程完成它