您的位置:首页 > 移动开发 > Android开发

Android 用广播关闭Activity

2018-01-08 18:47 337 查看
多个Activity界面跳转,关掉某个Activity

1、广播关闭Activity

通过在AndroidManifest.xml文件中,对Activity进行静态过滤action注册;

<activity android:name=".activity.AActivity">
<intent-filter>
<action android:name="action_a" />
</intent-filter>
</activity>
<activity android:name=".activity.BActivity">
<intent-filter>
<action android:name="action_b" />
</intent-filter>
</activity>


再者,需要创建BaseActivity,需关闭的Activity要继承BaseActivity。

BaseActivity.java源码

public class BaseActivity extends Activity {

//根据需求定义自己需要关闭页面的action
public static final String RECEIVER_ACTION_FINISH_A = "action_a";
public static final String RECEIVER_ACTION_FINISH_B = "action_b";

private FinishActivityRecevier mRecevier;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mRecevier = new FinishActivityRecevier();
registerFinishReciver();
}

private void registerFinishReciver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(RECEIVER_ACTION_FINISH_A);
intentFilter.addAction(RECEIVER_ACTION_FINISH_B);
registerReceiver(mRecevier, intentFilter);
}

private class FinishActivityRecevier extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//根据需求添加自己需要关闭页面的action
if (RECEIVER_ACTION_FINISH_A.equals(intent.getAction()) ||
RECEIVER_ACTION_FINISH_B.equals(intent.getAction()) ) {
BaseActivity.this.finish();
}
}
}

@Override
protected void onDestroy() {
if (mRecevier != null) {
unregisterReceiver(mRecevier);
}
super.onDestroy();
}
}


BActivity.java 源码使用

public class BActivity extends BaseActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
}
public void onClick(View view) {
switch (view.getId()){
case R.id.b_activity_btn:
sendFinishActivityBroadcast(this);
break;
}
}
public static void sendFinishActivityBroadcast(Context context) {
Intent intent = new Intent(BaseActivity.RECEIVER_ACTION_FINISH_A);
context.sendBroadcast(intent);
intent = new Intent(BaseActivity.RECEIVER_ACTION_FINISH_B);
context.sendBroadcast(intent);
}
}


sendFinishActivityBroadcast方法也可以做成Utils工具类,这样会更方便使用,减少Activity的代码量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android