3
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

この方法を使用します

moveTaskToBack(true);

私はアプリケーションを開発していて、それを終了する必要がある最後のアクティビティで、アプリケーションを終了する上記のメソッドを使用しました。問題は、アクティビティのみが存在し、アプリケーションがバックグラウンドで実行されることです(タスクマネージャーに表示されます)。アプリケーションを再度ロードするときはいつでも、アプリケーションを終了した場所(最後のアクティビティ)から開始します。

それを完全に終了し、フォームの背景(タスクマネージャー)を削除するためのコードはありますか?

前もって感謝します。

4

9 に答える 9

5

アプリケーションを終了するには、ルート アクティビティ (ランチャーが最初に開始するアクティビティ) に戻ります。

Intent intent = new Intent(this, MyRootActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addExtra("exit", "true");
startActivity(intent);

これにより、ルート アクティビティまでのタスク スタックがクリアされ、このインテントでルート アクティビティが再び開始されます。

ルート アクティビティでは、onCreate()次のように、インテントのエクストラに基づいて終了するかどうかを決定する必要があります。

Intent intent = getIntent();
if (intent.hasExtra("exit")) {
    // User wants to exit
    finish();
}

また、タスク マネージャーからアプリを削除することについても言及しています。「最近のアプリのリスト」を参照している場合、これは「実行中のアプリケーション」のリストではなく、ユーザーが最近使用したアプリケーションのリストです。アプリがそこに表示されたからといって、それが実行されているとは限りません。

アプリが「最近のアプリのリスト」に表示されないようにしたい場合は、これをルート アクティビティのマニフェスト エントリに追加するだけです。

android:excludeFromRecents="true"
于 2013-01-14T09:50:24.863 に答える
1

このコードで最後のアクティビティを開始して、すべてのアクティビティ スタックをクリアします。戻るボタンを押すか電話をかけるfinish()と、アクティビティが終了します。

Intent intent = new Intent(this, YourActivityD.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

FLAG_ACTIVITY_CLEAR_TASK は API 11 からのみ使用できることに注意して
ください。詳細については、http://developer.android.com/guide/components/tasks-and-back-stack.html を参照してください

于 2013-05-30T16:45:33.257 に答える
1

電話をかけたくない場合はfinish();、追加することもできます

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
于 2013-01-14T08:30:41.080 に答える
0

なぜあなたは単に使用しないのですか

this.finish()

于 2013-01-14T08:05:35.277 に答える
0

startActivity(intent);その後にaddを呼び出しfinish();て、古いアクティビティを閉じます(将来そのアクティビティに戻りたい場合を除く)

したがって、コードは次のようになります。

startActivity(intent);  
finish();  
于 2013-01-14T08:26:14.643 に答える
0

電話でアクティビティを終了する必要があります

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   startActivity(intent);
   activity.this.finish();

またはアクティビティでdestroyメソッドを呼び出すことができます

   @Override     
   public void onDestroy()
    {
      super.onDestroy();
      finish();
     }
于 2013-01-14T09:47:11.457 に答える
0

android:noHistoryでフラグを使用してみてくださいAndroidManifest.xml

http://developer.android.com/guide/topics/manifest/activity-element.html

于 2013-01-14T09:24:06.630 に答える
0

これを試して:

Intent finishapp = new Intent(Intent.ACTION_MAIN);
finishapp.addCategory(Intent.CATEGORY_HOME);
finishapp.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(finishapp);
于 2013-01-14T08:32:46.137 に答える
0

ここに私の作業コードがあります

終了ボタンで:

Intent intent = new Intent(getApplicationContext(), MainActivity.class);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
mainIntent.putExtra("close", true);
startActivity(mainIntent);
finish();

そのコードは、他のアクティビティを閉じて、MainActivity を MainActivity の一番上に移動することです。

if( getIntent().getBooleanExtra("close", false)){
    finish();
}
于 2015-11-26T10:25:14.773 に答える