今天在做一个热修复的功能,发现有时需要重启app后修复代码才能生效,所以简单调查了下重启的方案,进而分享给大家~
a. 使用 FLAG_ACTIVITY_CLEAR_TOP :
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
b. 使用 AlarmManager:
Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
PendingIntent restartIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 50, restartIntent);
android.os.Process.killProcess(android.os.Process.myPid());