每天差不多有千分之一的崩溃率,成为应用崩溃的最大组成,崩溃信息如下:
java.lang.NoClassDefFoundError: android.support.v7.view.menu.MenuBuilder at android.support.v7.widget.ActionMenuView.getMenu(ActionMenuView.java:642) at android.support.v7.widget.Toolbar.ensureMenu(Toolbar.java:864) at android.support.v7.widget.Toolbar.getMenu(Toolbar.java:835) at android.support.v7.widget.ToolbarWidgetWrapper.getMenu(ToolbarWidgetWrapper.java:691) at android.support.v7.app.ToolbarActionBar.getMenu(ToolbarActionBar.java:595) at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:447)
解决如下:
public static void fixMenuBuilder(ActionBar actionBar) {
if(actionBar==null) return;
try {
if(actionBar.getClass().getName().equals("android.support.v7.app.ToolbarActionBar"))
{
Method destory = actionBar.getClass().getDeclaredMethod("onDestroy");
destory.setAccessible(true);
destory.invoke(actionBar);
Field mi = actionBar.getClass().getDeclaredField("mMenuInvalidator");
mi.setAccessible(true);
mi.set(actionBar, new Runnable(){
@Override
public void run() {
SLog.i("lzf", "fix invoked!!!");
}
});
actionBar.invalidateOptionsMenu();
}
} catch (Exception e) {
e.printStackTrace();
}
}