0

ホーム画面に移動するインテントが必要になるのはいつですか? それは、アプリケーションを制御できなくなったということではないでしょうか?

たとえば、次のコードが実行された後、開発者として何ができるでしょうか。

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
4

1 に答える 1

3

これは、おそらくあなたが考えるよりも難しい質問です。まず第一に、実生活では、通常はそうしないでしょう。アクティビティが終了したら、finish() メソッドを呼び出します。Android システムは、アクティビティを呼び出したアクティビティに戻ります。これは、ホーム画面から起動した場合はホーム画面になります。ただし、たとえば連絡先の住所の地図を見るなど、他のアプリケーションから起動した場合は、地図アクティビティで「finish()」を実行すると、連絡先アプリに戻ります。

インテントを使用してアクティビティを起動すると、そのアクティビティの正確な性質に応じて、アクティビティが実行されているプロセスでそのアクティビティの新しいインスタンスを開くか、既に実行されている別のプロセスを前面に出すことができます。アプリケーション/アクティビティ。ホーム画面の場合、ホーム画面がアプリケーション/アクティビティとしてどのようにプログラムされているか、マニフェストでどのように宣言されているかがわからないため、何が起こるか正確にはわかりません。

笑いのために、私は私のアプリケーションの 1 つのメイン アクティビティの onCreate() にあなたのコード行を入れました。かなり挙動不審になりました。その意図は間違いなく私をアプリから追い出し、私のアプリケーションがプロセスで実行されていたプロセスを破壊したようです. (少なくともEclipseでは、ADB接続が終了したため、何が起こっているのかわかりませんでした。)ホーム画面からメインのアクティビティに戻ると、アプリのメイン画面に戻ることがありました。アプリのセカンダリ画面に戻り、ホーム画面に戻ることもあります。セカンダリ アプリのインテントを呼び出す他のコード行は、どういうわけかアプリの「状態」の一部であり、ホーム アクティビティを起動した後に何らかの形で戻ってくると思います。

明らかに私はここでうろうろしています。これは、「finish()」を使用してアクティビティから逃れるのではなく、ホームスクリーンを起動するインテントを呼び出すことで本当に役立つ何かのコンテキストで答えを出す可能性のある他の人に任せます。

于 2012-04-23T03:34:50.273 に答える