Mục tiêu
Tự động restart toàn bộ ứng dụng (process) khi người dùng bấm nút.
Cách làm: Dùng AlarmManager + PendingIntent
Bước 1: Tạo project
Bước 2: Layout activity_main.xml
<LinearLayout ... android:gravity="center" android:orientation="vertical">
<TextView android:id="@+id/text" android:textSize="28sp" android:textAlignment="center" android:layout_width="match_parent" android:layout_height="wrap_content" />
</LinearLayout>
Bước 3: MainActivity.java
public class MainActivity extends AppCompatActivity {
TextView textview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textview = findViewById(R.id.text);
textview.setText("Click here to restart app");
textview.setOnClickListener(v -> restartApp());
}
private void restartApp() {
Intent intent = new Intent(this, MainActivity.class);
int pendingIntentId = 123456;
PendingIntent pendingIntent = PendingIntent.getActivity(this, pendingIntentId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// Khởi động lại sau 100ms
alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + 100, pendingIntent);
System.exit(0); // Kill process hiện tại
}
}
Giải thích:
- Tạo Intent trỏ về Activity chính (MainActivity).
- Tạo PendingIntent với FLAG_CANCEL_CURRENT.
- Dùng AlarmManager để schedule PendingIntent chạy sau 100ms.
System.exit(0)kết thúc process hiện tại. AlarmManager sẽ khởi động lại app.
Kết quả
Màn hình ban đầu:

Click TextView → App tắt và tự mở lại sau ~100ms.
Lưu ý & Cách thay thế
System.exit(0)không được khuyến khích (Android quản lý lifecycle tự động).- Cách nhẹ nhàng hơn:
recreate()(chỉ restart Activity), hoặc dùngProcessPhoenixlibrary. - API 11+:
Activity.recreate()restart Activity hiện tại. - Restart toàn process: Library
ProcessPhoenix.triggerRebirth(context).