web-dev-qa-db-ja.com

アプリ/アクティビティの終了/終了-android

_Act1_、_Act2_、_Act3_、_Act4_の4つのアクティビティがあります。 Act1のボタンはAct2を開き、Act2のボタンはAct3を開き、Act3のボタンはAct4を開きます。

私は2つのことをしたいです:

  1. Act4には、ユーザーをAct1に誘導するボタンがあります。問題は、ユーザーがAct1に戻ってクリックしたときに、Act4を開く代わりにアプリを閉じることです。

  2. ユーザーが選択したときにすべてのアクティビティのメニュー「終了」のオプションがあります。前のアクティビティに戻るのではなく、アプリを閉じます。

finish();を使用してみましたが、私の要件を満たしていませんでした。

16
kumareloaded

_Act4_ 'th _Menu.xml_の終了ボタンで以下のコードを使用します-

_Intent intent = new Intent(Act4.this, Act1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
_

そして、あなたの最初のアクティビティのonCreate()メソッドに以下のコードを置くだけです-

_if (getIntent().getBooleanExtra("EXIT", false)) 
{
    finish();
}
_

これでアプリが終了します。

32
Praveenkumar

このリンクをチェックしてください:

ここをクリック

以下を使用できます。

@Override
public void onBackPressed()
{
     moveTaskToBack(true);
}

すべてのアクティビティでアプリを閉じます。

8
Krishna Suthar
Intent intent = new Intent(Act4.this, Act1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

前のアクティビティに戻る前にフラグをクリアします。それはあなたを助けるかもしれません。

3
Prerak

次のアクティビティに移動したときに前のアクティビティを終了するには、finish();の後にstartactivity(intent);を記述し、4番目のアクティビティのボタンクリックイベントから最初のアクティビティを開始するコードを記述します。

Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();

また、すべてのアクティビティでExitボタンのClickイベントに以下のコードを記述します。

finish();
2
Dipak Keshariya

このコードをアプリに配置します。

moveTaskToBack(true);
Android.os.Process.killProcess(Process.myPid());
System.exit(1);
1
Manikumar Gouni

使用する Android:noHistory = "true" AndroidManifest.xmlファイル内

    <activity
        Android:name=".Act1"
        Android:noHistory="true" />
    <activity
        Android:name=".Act2"
        Android:noHistory="true" />
    <activity
        Android:name=".Act3"
        Android:noHistory="true" />
    <activity
        Android:name=".Act4"
        Android:noHistory="true" />
0
Jithin Jude

私はこの方法を使用します:
1。残りのアクティビティを閉じる最初のアクティビティで静的アクティビティを作成します。
2。次に、このような静的メソッドで呼び出すと、どこからでもアプリを閉じます。

public static Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    activity=this;
}
public static void CloseApp(){
    activity.finish();
} 
0
Hakim Douib
Do a 
<code>

try
{
finalize();
finish
}
catch(Exception error)
{
error.printStackTrace();
}
//This would exit your App neatly
</code>
0
user2955481

私が使用するアプローチは、すべての子アクティビティをstartActivityForResultで開始することです。次に、子の終了時にputExtra( "STATE"、some_value)を配置し、状態値を使用して親を介して何をするかを決定できます。

深い子からアプリを終了する場合、「STATE」は「exit」になり、階層内の各子は単に「exit」のStringExtraを取得し、putExtra(「STATE」、「exit」)を実行して呼び出します。 finish()そして、アプリは最後にfinish()を呼び出します。これを使用して、必要な状態を実現できます。

この方法でstartActivityForResultを使用してメッセージを渡すと、厄介な参照を子アクティビティに渡す必要がなくなり、アプリの目的の状態を設定するアプローチが簡単になります。

0
R Earle Harris

(アプリケーションアクティビティスタック内に)別のアクティビティがある場合は、finish()を使用して現在のアクティビティを終了できます。

ただし、back関数は、アプリケーションアクティビティスタックから現在のアクティビティを削除することも想定しています。

私の経験では、バックスタック(アプリケーションアクティビティスタック)のアクティビティに依存することは非常に信頼できません。そのため、私は深くなると各アクティビティを終了していました。

あなたの場合:

Act 1 -> exit -> Act 2 -> exit -> Act 3 -> exit -> Act 4 -> exit -> Act 1 -> exit 

上記のメソッドは、すべてのアクティビティを終了します。

ただし、バックグラウンドでコードを実行する場合は、「アクティビティ」ではなく「サービス」に依存することをお勧めします。割り当てられた作業を行った後、「サービス」を終了させることができます。

0
kalan