通过本地广播关闭之前的Activity

Posted ennis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过本地广播关闭之前的Activity相关的知识,希望对你有一定的参考价值。

打开第二个Activity时想要关闭第一个Activity直接finish就行,但是如果打开第三个Activity时想要关闭第一个Activity就不是那么方便

其中一种方法就是通过广播来关闭,这里讲的是通过本地广播来关闭

在要关闭的Activity中写一个内部类finishAppReceiver,或者写一个BaseActivity,让项目的所有Activity都继承自这个

public class MainActivity extends AppCompatActivity {

    LocalBroadcastManager localBroadcastManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        localBroadcastManager = LocalBroadcastManager.getInstance(this);
    }

    protected BroadcastReceiver finishAppReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    };

    @Override
    public void onResume() {
        super.onResume();
        IntentFilter filter = new IntentFilter();
        filter.addAction("FINISH");
        localBroadcastManager.registerReceiver(this.finishAppReceiver, filter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        localBroadcastManager.unregisterReceiver(this.finishAppReceiver);
    }
}

 

在需要关闭的时候发送广播

LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
Intent finish = new Intent("FINISH");
localBroadcastManager.sendBroadcast(finish);

 

以上是关于通过本地广播关闭之前的Activity的主要内容,如果未能解决你的问题,请参考以下文章

java [Intent] Intent片段以启动Activity,Service或发送广播。 #android_snippet #android

完全关闭App的两种做法

将字符串数据从Activity发送到片段[关闭]

我无法通过广播将数据发送到活动中的片段

使用广播退出多个activity

使用广播退出多个activity