18

メソッドを呼び出さずにアクティビティをバックグラウンドに移動しfinish()、これを開始した親アクティビティに戻るにはどうすればよいですか?たくさん試しましたが、解決策が見つかりませんでした。だから皆さんが助けてくれたらとてもありがたいです。

4

5 に答える 5

46

アクティビティがその親とは異なるタスクで実行されている場合、以下が機能します。これを実現するには、http://developer.android.com/guide/topics/manifest/activity-element.html#lmodeを参照してください

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

現在のタスクは非表示になりますが、その状態は変更されないままであり、再度アクティブ化すると、タスクを終了したときと同じように表示されます。

于 2011-08-15T21:57:03.847 に答える
2

バックグラウンドでキャッシュ/保存/処理するデータがある場合は、AsyncTaskまたはThreadを使用できます。

キャッシュ/親への移行の準備ができたら、子のActivityメソッドの1つで次のようなことを行います(startActivityForResult()で子を開始したと仮定します)

スレッドアプローチ:

Thread t1 = new Thread(new Runnable() {

        @Override
        public void run() {
            // PUT YOUR CACHING CODE HERE

        }
});

t1.start();

setResult( whatever );
finish();

新しいスレッドから何かを返す必要がある場合は、ハンドラーを使用することもできます。

AsyncTaskアプローチ:

new CacheDataTask().execute( data params );
set_result( whatever );
finish();

AsyncTaskは、新しいスレッドで何かを処理する必要があるが、UIプロセスと通信できる状況向けです。

于 2010-04-28T03:02:25.100 に答える
2

単に

protected void minimumApp(){Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startMain); }

于 2017-07-27T09:49:44.317 に答える
0

試す:

 Intent toNextActivity = new Intent(CurrentActivity.this,
                                     NextActivity.class);
 CurrentActivity.startActivity(toNextActivity);

この方法を使用すると、CurrentActivityのメソッドonPause()が呼び出され、CurrentActivityに静的変数(MediaPlayerオブジェクトなど)がある場合は、引き続き存在します(または再生中の場合は再生されます)。

私は自分のアプリケーションでそれを使用していますが、サービスでそれを行うためのより良い方法を見つけました。

これがお役に立てば幸いです。

于 2010-01-11T13:08:08.633 に答える
0

Activityタスクを後方に移動しても、ライフサイクルイベントに応答して手動で実行しない限り、状態を維持できるとは限りません。

ActivityIntent使用して2番目を開始するstartActivity()か、2番目から結果を受け取る必要がある場合は、を使用する必要がありActivityますstartActivityForResult()。これにより、ユーザーがを終了Activityして最初のに戻ったときにコールバックを受け取ることができますActivity

開始しActivityて結果を取得する:http://developer.android.com/reference/android/app/Activity.html#StartingActivities

于 2012-02-19T04:34:28.747 に答える