9

複雑な理由で、ユーザーがHOMEボタンを押したときにアクティビティをfinish()できるようにする必要があります。

ここでの話は、完全に透過的なアクティビティを持つアプリケーションの別の部分を起動するホーム画面ウィジェットがあることです(したがって、アクティビティが実行されていてもホーム画面は表示され続けます)。以前のアクティビティがホームボタンで終了した場合、それらは前面に表示され、ホーム画面が見えなくなります。

または、別の方法として、新しいアクティビティで前のアクティビティを強制的にfinish()することはできますか?

4

5 に答える 5

12

どうですか

android:launchMode="singleTask"

また

android:launchMode="singleInstance"

マニフェストに?私singleTaskはあなたが望むものだと思いますが、私はまだあなたが何をしているのかはっきりしていません。

「システムは新しいタスクのルートにアクティビティを作成し、インテントをそのタスクにルーティングします。ただし、アクティビティのインスタンスがすでに存在する場合、システムはonNewIntent()メソッドの呼び出しを通じて、インテントを既存のインスタンスにルーティングします。新しいものを作成するよりも。」 singleTask

@Override
void onPause() {
   super.onPause();
   finish();
}

dev docs:Acitvity LifecycleFinish

于 2011-06-17T16:07:14.710 に答える
3

ホーム画面から起動したアクティビティにandroid:clearTaskOnlaunch="true"を設定します。例:

<activity
            android:name="MainActivity"
            android:exported="true"
            android:clearTaskOnLaunch="true"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

于 2014-10-23T01:35:23.370 に答える
0

ホームボタンを押したときのfinish()についてはわかりませんが、次を使用して前のアクティビティをfinish()できると思います。

Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivity(i);
finish();

おそらくそれを行うための最良の方法ではありません。サブアクティビティの親アクティビティを呼び出して、そのように終了することもできると思いますが、確かではありません。

于 2011-06-17T16:01:10.267 に答える
0

ホームボタンが押されたときに音を閉じるのに問題がありました。私はこのコードを以下で行いました。それがあなたを助けることを願っています。onpause()メソッドをオーバーライドします。

 @Override
 public void onPause(){
      System.exit(0);
      super.onPause(); 
 }
于 2012-04-10T05:21:08.570 に答える
-1
@Override
public void onStop() {
    super.onDestroy();
}
于 2015-02-20T16:36:02.577 に答える