Если это корпоративный проект, в котором у вас есть контроль над устройствами, вы можете легко установить второе приложение, которое работает в качестве сторожевого таймера для первого.Один из моих клиентов использует такое сторожевое приложение для обработки таких вещей, как ночная перезагрузка приложения (по странным, нетехническим причинам), а также для проверки и установки обновлений приложения самообслуживания (не Play Store).
Но если вы действительно хотите сделать это из своего приложения, вы можете сделать следующее (включая процесс уничтожения, описанный выше):
Process.killProcess(Process.myPid());
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 500 /* half a second*/,
PendingIntent.getActivity(this, 0, new Intent(this, this.getClass()),
Intent.FLAG_ACTIVITY_NEW_TASK));