将activityManager.destroyActivity(id, true);改为以下代码:
- public
static boolean destroy(ActivityGroup activityGroup, String id) { - final
LocalActivityManager activityManager = activityGroup.getLocalActivityManager(); - if(activityManager
!= null){ - activityManager.destroyActivity(id,
false); - try
{ - final
Field mActivitiesField = LocalActivityManager.class.getDeclaredField("mActivities"); - if(mActivitiesField
!= null){ - mActivitiesField.setAccessible(true);
- @SuppressWarnings("unchecked")
- final
Map mActivities = (Map)mActivitiesField.get(activityManager); - if(mActivities
!= null){ - mActivities.remove(id);
- }
- final
Field mActivityArrayField = LocalActivityManager.class.getDeclaredField("mActivityArray"); - if(mActivityArrayField
!= null){ - mActivityArrayField.setAccessible(true);
- @SuppressWarnings("unchecked")
- final
ArrayList - if(mActivityArray
!= null){ - for(Object
record : mActivityArray){ - final
Field idField = record.getClass().getDeclaredField("id"); - if(idField
!= null){ - idField.setAccessible(true);
- final
String _id = (String)idField.get(record); - if(id.equals(_id)){
- mActivityArray.remove(record);
- break;
- }
- }
- }
- }
- }
- }
- }
catch (Exception e) { - e.printStackTrace();
- }
- return
true; - }
- return
false; - }