Различные способы программного перезапуска приложения Android при нажатии кнопки

Опубликовано: 2 Сентября, 2022

Иногда мы хотим обновить действие, но это невозможно. В этом месте, если мы перезапустим наше приложение, оно автоматически обновится. Кроме того, мы можем использовать это для перезапуска нашего приложения в случае его сбоя. В большинстве случаев, когда мы открываем любое приложение, оно извлекает все доступные на данный момент данные. Но если в то же время, если в базу данных будет обновлено больше данных, мы можем использовать эту функцию для перезапуска, чтобы снова получать все данные каждый раз, когда он получает новые данные.

Теперь самое главное, как мы можем программно перезапустить приложение Android при нажатии кнопки . Итак, в этой статье мы собираемся обсудить три различных метода программного перезапуска приложения Android при нажатии кнопки.

Пошаговая реализация

Шаг 1: Создайте новый проект

Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio». Обратите внимание, что в качестве языка программирования выберите Java .

Шаг 2: Работа с файлом activity_main.xml

Перейдите к приложению > res > layout > activity_main.xml и добавьте приведенный ниже код в этот файл. Ниже приведен код файла activity_main.xml .

XML




<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">
  
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click on Button to restart the app"
        android:textStyle="bold" />
  
    <Button
        android:id="@+id/click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:background="@color/black"
        android:padding="10dp"
        android:text="Click to Restart" />
  
</LinearLayout>

Способ 1

Перейдите к файлу MainActivity.java и обратитесь к следующему коду. Ниже приведен код файла MainActivity.java . Комментарии добавляются внутри кода, чтобы понять код более подробно.

Java




import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
  
import androidx.appcompat.app.AppCompatActivity;
  
public class MainActivity extends AppCompatActivity {
  
    Button click;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        click = findViewById(R.id.click);
        click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                  
                // after on CLick we are using finish to close and then just after that
                // we are calling startactivity(getIntent()) to open our application
                finish();
                startActivity(getIntent());
                  
                // this basically provides animation
                overridePendingTransition(0, 0);
                String time = System.currentTimeMillis() + "";
                  
                // Showing a toast message at the time when we are capturing screenshot
                Toast.makeText(MainActivity.this, "Current time in millisecond after app restart" + time, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

Выход:

Способ 2

Добавьте эту реализацию в вашу сборку. файл градиента

implementation ‘com.jakewharton:process-phoenix:2.0.0’

Добавьте это значение по умолчанию в файл Androidmanifest.xml .

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>

Добавьте следующий код в файл MainActivity.java.

Java




import android.os.Bundle;
import android.view.View;
import android.widget.Button;
  
import androidx.appcompat.app.AppCompatActivity;
  
import com.jakewharton.processphoenix.ProcessPhoenix;
  
public class MainActivity extends AppCompatActivity {
  
    Button click;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
  
        setContentView(R.layout.activity_main);
        click = findViewById(R.id.click);
  
        click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // this process phoenix library is used 
                // in case to restart our application
                ProcessPhoenix.triggerRebirth(getApplicationContext());
            }
        });
    }
}

Выход:

Способ 3

Добавьте следующий код в файл MainActivity.java.

Java




import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
  
import androidx.appcompat.app.AppCompatActivity;
  
public class MainActivity extends AppCompatActivity {
  
    Button click;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        click = findViewById(R.id.click);
        click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Navigating From MainActivity to MainActivity.
                // Navigate from this activity to the activity 
                // specified by upIntent,
                // basically finishing this activity in the process.
                navigateUpTo(new Intent(MainActivity.this, MainActivity.class));
                startActivity(getIntent());
            }
        });
    }
}

Выход: