使用广播销毁多个Activity

由于业务需求,我们有时会碰到这样的问题:有一系列Activity直行流程为,A->B->C-D,  B可以返回到A,C可以返回到B,但是从D返回必须直接退出程序,

由于A,B,C可以前进也可以后退,所以单纯的调用finish()方法不行,下面是一种使用广播来实现这个功能。

1,实现一个Service,这个Service能够发送广播。

public class FinishActivityService extends IntentService{
	public static final String FINISH_ACTIVITY_ACTION = "com.compusassistant.broadcastreceiver.finish";

	public FinishActivityService() {
		super("FinishActivityService");
	}

	@Override
	protected void onHandleIntent(Intent intent) {
		Intent broadcastIntent = new Intent(FINISH_ACTIVITY_ACTION);
		sendBroadcast(broadcastIntent);
	}

}

2,在A,B,C中都注册一个广播

public class ActivityA extends Activity
	private static final String TAG = "ActivityA";
	
	private Context mContext = this;
	private IntentFilter mIntentFilter;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.select_school_activity);
		
		mIntentFilter = new IntentFilter(FinishActivityService.FINISH_ACTIVITY_ACTION);
		registerReceiver(finishActivityReceiver, mIntentFilter);
	}
	
	BroadcastReceiver finishActivityReceiver = new BroadcastReceiver(){

		@Override
		public void onReceive(Context context, Intent intent) {
			finish();
			
		}
		
	};
<span style="white-space:pre">	</span>public void onDestroy(){<span style="font-family: Arial, Helvetica, sans-serif;">	</span>
<span style="white-space:pre"></span><pre code_snippet_id="588048" snippet_file_name="blog_20150124_2_5349661" name="code" class="java"><span style="white-space:pre">		</span>unregisterReceiver(finishActivityReceiver);
 
<span style="white-space:pre">	</span>}
}
3,在D中启动服务

public class MainActivity extends Activity{
	private static final String TAG = "BaseActivity";
	
	private Context mContext = this;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main_activity);
		
		startService(new Intent(mContext,FinishActivityService.class));
	}
}

这样,当进入到D后,返回后会直接退出程序了



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值