【问题标题】:Closing an Activity in Broadcast Receiver关闭广播接收器中的活动
【发布时间】:2016-04-22 11:08:50
【问题描述】:

我有一个广播接收器来检查互联网连接,我已在其中验证是否没有互联网连接我通过意图显示错误屏幕。现在我需要在重新连接网络时关闭错误屏幕并显示网络消失的前一个屏幕。

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        isConnected = intent.getBooleanExtra(ConnectionDetector.CONNECTED_KEY, false);
        if(isConnected){
            System.out.println("A1");
            finish();
        }
        if (intent.getAction().equals(CONNECTION_BROADCAST_ACTION)) {
            System.out.println("A2");
            No_Network.this.finish();
        }
    }
};

这是我在错误屏幕活动中的代码。如何在这里关闭活动? finish() 不起作用。

【问题讨论】:

  • 您应该使用context.finish();,它将被投射到您的活动中。
  • context.finish() 显示错误无法解析finish()
  • 你应该投射你的活动。 BR 在您的活动中还是在外部自定义类中??
  • 这个 BroadcastReceiver BR 在我的 Activity 中,而 ConnectionDetector BR 是外部类
  • 然后只需调用 (YourActivityName)context.finish();

标签: android android-activity broadcastreceiver


【解决方案1】:

如何在此处关闭活动?完成()不工作

它“不起作用”是因为您没有正确使用它。正确的做法是通知活动并将其告知finish() 本身。您可以通过将带有您的“魔术”代码的意图直接发送到您的活动来做到这一点(如果它处于singleTop 启动模式,那么startActivity() + onNewIntent() 就足够了)。或者使用事件总线进行通信。

【讨论】:

  • 抱歉,您能简单介绍一下吗?我无法理解
猜你喜欢
  • 2018-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多