基本的に、ビデオ会議アプリケーションのコードを含むアクティビティがあります。そして私はそれをバックグラウンドで保つ必要があります。ユーザーがボタンを押すと、FloatingViewServiceを作成し、自分のアクティビティからデータをそのFloatingViewServiceに送信するようにします。そして、私は以前の活動がまだ動作している間に、(この作品)、新しい意図を開始し、私のアプリをナビゲートするためにそれを使用し、データをFloatingViewServiceに送信することができます。 私の問題はランダムなアクティビティを開始したくないということですが、コールを開始する前に以前のアクティビティに戻っていきたいと思います。現在のアクティビティを終了することなく、以前のアクティビティに戻る方法
Intent intent = new Intent(HomeActivity.this, InCallActivity.class);
intent.putExtra("url", "url");
intent.putExtra("test", false);
startActivity(intent);
ノート:私は私の通話を開始すると 、私はこのようにそれを行います! 2番目のアクティビティが作成された後、私が終了を呼び出すと、私は私のHomeActivityに連れて行きます。それは素晴らしいです。 しかし、私は終了したくない、単に私のクラスが呼び出されているアクティビティに行きたい。
私は:moveTaskToBack(true);
で試しましたが、ホーム画面にアプリを送信します。私はFLAG_ACTIVITY_REORDER_TO_FRONT
を使用して、backstackから活動を回復できることを考える
ActivityManager m = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTaskInfoList = m.getRunningTasks(10);
Iterator<ActivityManager.RunningTaskInfo> itr = runningTaskInfoList.iterator();
while(itr.hasNext()){
ActivityManager.RunningTaskInfo runningTaskInfo = (ActivityManager.RunningTaskInfo)itr.next();
int id = runningTaskInfo.id;
CharSequence desc= runningTaskInfo.description;
int numOfActivities = runningTaskInfo.numActivities;
String topActivity = runningTaskInfo.topActivity.getShortClassName();
Log.i("","top activity: " + topActivity);
}
しかし、私は戻って私の活動を得ることはありませんが、その理由は次のとおりです。 はまた、私はこのコードを作ったのですか? 私が得るすべては、次のとおりです。
12-06 13:17:54.213: D/HeartRateApplication(3168): top activity: com.vidyo.vidyocore.activities.WebViewActivity
12-06 13:17:54.213: D/HeartRateApplication(3168): top activity: com.google.android.launcher.GEL
しかし、私は仕上げを行う場合、それはそれに私を取り戻すために、明らかに私のHomeActivityは、そこにあります。なぜ私は実行中の活動から私のリストにそれを取得しないのですか? これをどのように修正できますか?
EDIT:
私が意図して活動を始めるべきであると言ったコメントがありました。だから私は十分にはっきりしていないかもしれないと思う。 デフォルトのアクティビティにインテントを開始できません。 このInCallActivityが複数のアクティビティから呼び出される可能性があります。したがって、私は前にどのような活動があったのか知る必要があるので、私はその活動に意欲を呼ぶことができます。FLAG_ACTIVITY_REORDER_TO_FRONT
したがって、論理はrunningTaskInfo
を使用していますが、それは私にバックスタック全体を提供しません。バックスタックを取得する別の方法はありますか?私は実際に開始するwhayの活動を知ることができますか?
このように言わせてください。私はアクティビティBを開始し、それを開始したアクティビティに戻っていきたいと思います。 私は3つの場合があります:A-> B、B-> A、A - > B、そしてB-> A '、A " - > B、B-> A"が必要です。 どのクラスでどのクラスを開始したかを知ることができ、そのクラスへの意図を開始するにはどうすればよいですか? PS:これはライブラリなので、クラスBのコードにアクセスできますが、クラスA、A '、A "はインテントをBに呼び出すことはできません。 これが私が使用しようとする理由ですバックスタック。私の本当の疑問は、バックスタックがリスト内のアクティビティAを返さない理由です。明らかにそれがある場合(完了は私に再開されます) –
これは複雑になっていますが、あなたの問題に対する非常に簡単な解決策は、 intent.putExtra(ACT名)と共に、アクティビティフローを追跡することができます。........................... ..................例:String mAdvId = getIntent()。getStringExtra( "mADV"); 文字列mCliId = getIntent()。getStringExtra( "mCLI"); 文字列mCasStat = getIntent()。getStringExtra( "mCAS"); –
私はこの答えを受け入れるでしょう。なぜなら、これは私がやろうとしていることですから、ドキュメントを介してユーザーにアクティビティの名前を送信し、それが必要なときには –