1.解决ad72e265c1提交导致从二级菜单进入第三方应用按返回退出失败,多次按返回键和Home键二级菜单抛空指针Launcher界面奔溃或卡死异常的问题

This commit is contained in:
2026-04-01 17:54:45 +08:00
parent 618e771377
commit b7f20918f5
3 changed files with 30 additions and 11 deletions

View File

@@ -30,7 +30,9 @@ public class CategoryActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
if(FragmentManager.getInstance()==null){
FragmentManager.init(this,this);
}
super.onCreate(savedInstanceState);
}
@@ -45,6 +47,7 @@ public class CategoryActivity extends FragmentActivity {
if(bundle!=null){
mAction=bundle.getString("action");
}
if(FragmentManager.getInstance()==null) return;
if(RecommendFragment.ACTION.equals(mAction)){
showFragment(FragmentManager.getInstance().getFragmentByTag(FragmentManager.RECOMMEND_APPS_TAG),false);
}else if(MusicFragment.ACTION.equals(mAction)){
@@ -76,8 +79,10 @@ public class CategoryActivity extends FragmentActivity {
@Override
public void setFragmentsDisableRefreshDataFlag() {
if(FragmentManager.getInstance()!=null){
FragmentManager.getInstance().pressBackUpdateAllFragmentDisableRefreshDataFlag();
}
}
@Override
public void popBackStackFragment() {
@@ -86,6 +91,7 @@ public class CategoryActivity extends FragmentActivity {
@Override
public void onDoneEvents(MessageEvent messageEvent) {
if(FragmentManager.getInstance() == null) return;
if(MusicFragment.ACTION.equals(messageEvent.action)){
showFragment(FragmentManager.getInstance().getFragmentByTag(FragmentManager.MUSIC_APPS_TAG),false);
}else if(RecommendFragment.ACTION.equals(messageEvent.action)){
@@ -109,7 +115,9 @@ public class CategoryActivity extends FragmentActivity {
private void onResumeResetDisableFreshDataFlag() {
if(SharedPreferencesUtil.getSharePrefrencesBoolean(this,SharedPreferencesUtil.CONFIG_RESET_DISABLE_FRESHDATA_FLAG)){
SharedPreferencesUtil.setSharePrefrencesBoolean(this,SharedPreferencesUtil.CONFIG_RESET_DISABLE_FRESHDATA_FLAG,false);
if(FragmentManager.getInstance()!=null){
FragmentManager.getInstance().pressBackUpdateAllFragmentDisableRefreshDataFlag();
}
if(currentFragment!=null){
currentFragment.onResumeFragment(new MessageEvent());
}
@@ -143,7 +151,9 @@ public class CategoryActivity extends FragmentActivity {
@Override
protected void onDestroy() {
if(FragmentManager.getInstance()!=null){
FragmentManager.getInstance().destory();
}
super.onDestroy();
}
@@ -154,19 +164,25 @@ public class CategoryActivity extends FragmentActivity {
LogUtils.loge("onKeyDown===>"+keyCode);
if(keyCode==KeyEvent.KEYCODE_BACK){
if(currentFragment.onKeyDown(keyCode,event)){
if(currentFragment!=null&&currentFragment.onKeyDown(keyCode,event)){
return true;
}else {
//currentFragment.resetDisableRefreshDataFlag();
if(FragmentManager.getInstance()!=null){
FragmentManager.getInstance().pressBackUpdateAllFragmentDisableRefreshDataFlag();
}
return super.onKeyDown(keyCode,event);
}
}
if(keyCode==KeyEvent.KEYCODE_HOME){
LogUtils.loge("onKeyDown===>KEYCODE_HOME");
if(currentFragment!=null){
currentFragment.onDetach();
}
if(FragmentManager.getInstance()!=null){
FragmentManager.getInstance().pressBackUpdateAllFragmentDisableRefreshDataFlag();
}
}
return super.onKeyDown(keyCode,event);
}

View File

@@ -34,8 +34,9 @@ public class MyApplication extends Application {
logCrash(throwable);
// 可选:重启应用或结束进程
restartApp();
//restartApp();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(10);
}
});

View File

@@ -94,8 +94,10 @@ public class AppsFragment extends CategoryFragment {
List<AppBean> appBeanList = (List<AppBean>) data;
// 创建过滤后的列表
List<AppBean> filteredList = new ArrayList<>();
String selfPackageName = FragmentManager.getInstance().getPackageName();;
String selfPackageName = "com.droidlogic.mboxlauncher";
if(FragmentManager.getInstance()!=null){
selfPackageName = FragmentManager.getInstance().getPackageName();
}
for (AppBean appBean : appBeanList) {
// 跳过自身应用
if (appBean.getPackageName().equals(selfPackageName) || appBean.getPackageName().equals("com.android.traceur")) {