【发布时间】:2015-11-25 07:24:12
【问题描述】:
您好,我正在尝试使用广播接收器来触发某些操作
Activity A 将广播动作“ACTION_EXIT”并进入主Activity。
每当 Main Activity 收到广播“ACTION_EXIT”时,它都会关闭应用程序。
我在活动 A 上的代码(发送广播)
Intent broadcastIntent = new Intent(Beacon_MainActivity.this, MainActivity.class);
broadcastIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
broadcastIntent.setAction("com.package.ACTION_EXIT");
sendBroadcast(broadcastIntent);
finish();
Main Activity 上接收广播并触发 ACTION_EXIT 的代码
private void registerReceiver(){
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.package.ACTION_EXIT");
registerReceiver(myBroadcastReceiver, intentFilter);
}
@Override
public void onResume() {
registerReceiver();
super.onResume();
}
@Override
public void onPause() {
super.onPause();
unregisterReceiver(myBroadcastReceiver);
}
BroadcastReceiver myBroadcastReceiver =
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("onReceive", "Logout in progress");
Toast.makeText(MainActivity.this, "what the ****", Toast.LENGTH_SHORT).show();
finish();
}
};
不知道为什么它不起作用,任何人都可以帮助应该非常感谢
(当 Main_Activity 接收到广播时,应用程序应该关闭 简历)
【问题讨论】:
-
如果 Activity A 在屏幕上,MainActivity 会暂停。查看它的
onPause()方法。接收方在此处未注册。 -
发送完广播后,finish()方法会关闭activity A并启动Main_activity。这是我的意图
-
如果您从 MainActivity 启动 Activity A,请改用
startActivityForResult(),并在结果中将退出值传回 MainActivity。无需接收器。 -
Activity A 从 Login_Activity 开始。我的流程是 Main_Activity -->Login Activity---> Activity A. 并且要求是从 Activity A 退出应用程序
-
假设您在启动 Activity A 后完成 LoginActivity,然后使用添加了
FLAG_ACTIVITY_FORWARD_RESULT的 Intent 启动 Activity A。 Activity A 的结果将被传递回 MainActivity。
标签: android broadcastreceiver broadcast