今天看啥  ›  专栏  ›  计蒙不吃鱼

Android动态关闭某Activity

计蒙不吃鱼  · 掘金  ·  · 2021-02-22 17:06
阅读 38

Android动态关闭某Activity

博主由于最近为了弄软著权,已经很久没更新了,恰巧最近学弟问了我这个问题,就写篇博客

在Android中,栈是Activity存放的位置,所以此文章得在了解四种启动模式和栈的特点下阅读。废话不多说

需求:在一个Activity中关闭某个Activity。

解决方式:网上有许多的方法,而博主喜欢用结合广播的这种。

将当前Activity命名为MainActivity;
要被关闭的Activity命名为ElseActicity;

 public static final String ACTIVITY_MARK =“BoreSeven”;
复制代码

工具类:

   public static class BroadcastUtils {
        /**
         * 发送finish页面的广播
         */
        public static void sendFinishActivityBroadcast(Context context) {
            Intent intent = new Intent(ACTIVITY_MARK);
            context.sendBroadcast(intent);

        }
    }
复制代码

1.在ElseActivity中

   private FinishActivityRecevier mRecevier;

    protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
        setContentView(R.layout.else_activtiy);
      
        //广播
        mRecevier = new FinishActivityRecevier();
        registerFinishReciver();

    }
    //动态注册广播
    private void registerFinishReciver() {
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(ACTIVITY_MARK);

        registerReceiver(mRecevier, intentFilter);
    }

    private class FinishActivityRecevier extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            //根据需求添加自己需要关闭页面的action
            if (ACTIVITY_MARK.equals(intent.getAction())) {
                HideSortActivtiy.this.finish();
            }
        }
    }
     //在Activity销毁时移除广播
    @Override
    protected void onDestroy() {
        if (mRecevier != null) {
            unregisterReceiver(mRecevier);
        }
        super.onDestroy();
    }
复制代码

2.在MainActivity中调用工具类中方法:

 BroadcastUtils.sendFinishActivityBroadcast(this);
复制代码



原文地址:访问原文地址
快照地址: 访问文章快照