diff --git a/app/src/main/java/com/gh/base/AppUncaHandler.java b/app/src/main/java/com/gh/base/AppUncaHandler.java index 37abe1b4a9..dd384bf5fd 100644 --- a/app/src/main/java/com/gh/base/AppUncaHandler.java +++ b/app/src/main/java/com/gh/base/AppUncaHandler.java @@ -4,13 +4,16 @@ import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Looper; import android.util.Log; import android.widget.Toast; +import com.gh.common.constant.Config; import com.gh.common.util.FileUtils; import com.gh.common.util.NetworkUtils; import com.gh.common.util.RunningUtils; +import com.gh.common.util.Utils; import com.gh.gamecenter.SplashScreenActivity; import com.gh.gamecenter.manager.DataCollectionManager; import com.tencent.stat.StatService; @@ -57,18 +60,25 @@ public class AppUncaHandler implements UncaughtExceptionHandler { e.printStackTrace(); } - Intent intent = new Intent(appController.getApplicationContext(), - SplashScreenActivity.class); - intent.setAction(Intent.ACTION_MAIN); - intent.addCategory(Intent.CATEGORY_LAUNCHER); - PendingIntent restartIntent = PendingIntent.getActivity( - appController.getApplicationContext(), 0, intent, - PendingIntent.FLAG_UPDATE_CURRENT); - // 退出程序并重启 - AlarmManager mgr = (AlarmManager) appController - .getSystemService(Context.ALARM_SERVICE); - mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, - restartIntent); // 1秒钟后重启应用 + // 防止重复奔溃,导致助手一直重启,20秒内不做处理 + SharedPreferences sp = appController.getApplicationContext().getSharedPreferences( + Config.PREFERENCE, Context.MODE_PRIVATE); + long time = sp.getLong("last_restart_time", 0); + if (System.currentTimeMillis() - time > 20 * 1000) { + sp.edit().putLong("last_restart_time", System.currentTimeMillis()).apply(); + Intent intent = new Intent(appController.getApplicationContext(), + SplashScreenActivity.class); + intent.setAction(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_LAUNCHER); + PendingIntent restartIntent = PendingIntent.getActivity( + appController.getApplicationContext(), 0, intent, + PendingIntent.FLAG_UPDATE_CURRENT); + // 退出程序并重启 + AlarmManager mgr = (AlarmManager) appController + .getSystemService(Context.ALARM_SERVICE); + mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, + restartIntent); // 1秒钟后重启应用 + } appController.finishActivity(); } }