我有一個類(不是活動),有一堆活動在後臺。有時候,我想關閉堆棧中的舊活動,但大部分時間活動都是在後臺進行的,如果我使用finish()
,則不起作用。發送國旗完成任何其他職業活動
所以,我想使用putExtra
發送消息到該活動,因此它可以關閉onResume()
。
我試圖做這種方式沒有成功:
在我NoActivity.class:
public void removeActivityFromStack(Activity activity){
for(int i = mActivityStack.size(); i>0; i--){
if(mActivityStack.get(i - 1).equals(activity)){
mActivityStack.remove(i-1);
activity.getIntent().putExtra(CLOSE_ACTIVITY, true);
}
}
}
而且在MyActivity
的.class:
@Override
protected void onResume() {
super.onResume();
Bundle bundle = getIntent().getExtras();
if(bundle != null && bundle.getBoolean(getString(R.string.bundle_cerrar_activity), false)){
this.finish();
}
}
任何幫助將不勝感激。
我也嘗試使用BroadcastReceiver
關閉這些活動,但它仍然不起作用。我試了下道:
在我NoActivity.class
public void removeActivityFromStack(Activity activity){
for(int i = mActivityStack.size(); i>0; i--){
if(mActivityStack.get(i - 1).equals(activity)){
IntentFilter filter = new IntentFilter();
CloseActivitiesBroadcastReceiver baseActivityReceiver = new CloseActivitiesBroadcastReceiver();
filter.addAction(CLOSE_ACTIVITY);
current.registerReceiver(baseActivityReceiver, filter);
current.sendBroadcast(new Intent(CLOSE_ACTIVITY));
mActivityStack.remove(i-1);
}
}
}
而且在CloseActivitiesBroadcastReceiver.java:
public class CloseActivitiesBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(context.getString(R.string.bundle_cerrar_activity))) {
((Activity)context).finish();
}
}
}
你解決它? –
@ Ragu Swaminathan nope,不幸與BroadcasterReceiver不一樣。只是一個骯髒的方式。我可以把我的方式作爲答案,而沒有人給我一個更好的解決方案 –
你面臨的確切問題是什麼 –