2011-09-02 144 views
1

我知道有很多关于此的讨论,但我无法让它正常工作。如何切换到正在运行的活动正在运行活动

Activity(A)= singleTop并且可以接收android.intent.action.SEND
Activity(B)= singleTask

当我从Android库中选择一个图像,并用(A)
的(A)打开它被重定向(B)的意图。

这是工作正常,如果我按主页并从选择(A)从发射器 (B)被带到前面。这就是我想要的,用户可以使用图片继续,

现在,如果我HOME再次按下并打开Android的画廊(A)是
onRestart()OnStart()onResume()。我看到(A)。

这是我喜欢切换到(B)的问题,因为用户需要完成他正在做的事情。

我看不到一个很好的方法来做到这一点,为什么Android画廊恢复(A)?
也许我做了什么,因为打开Android图库带给我的(A)
这是基于在问题有限的信息可以推理任何帮助,将不胜感激

+0

可以告诉你想要做什么减去技术术语。我很困惑 –

+0

@哈沙我不明白你在说什么 – Erik

回答

0

UPDATE
我知道这是一个复杂的情况。 (B)发射后,我通过简单地杀死(A)/ finish()来制定工作解决方案。现在,

如果我按HOME并再次打开Android图库,我会看到Android图库。
如果我按HOME并打开A我看B.
如果我从B按回我看画廊

0

错误,假设A在重定向意图到B公司的onCreate()。

1)打开画廊,选择图像,以A开放,重定向它到B

Task1 has stack has Gallery, A, B (B on top of the stack) 

2)按家中,从发射器选择一个

Launcher app creates a new task, new task2's stack has a new instance of activity A, its onCreate() is invoked and intent is redirected to B. B being a singleTask is moved from Task1 to Task2 and its onNewIntent() would be invoked. 

3)按家庭,和打开图库

Task1 is resumed and the top of the stack is now A. Its onRestart(), onStart() and onResume() is invoked. 

这就是场景,您可以尝试从A的onStart()重定向目标,或者不要有B作为singleTask。

+0

你的绝对正确我认为,这是我对正在发生的事情的假设,(2)onNewIntent()正在发射,正如你所说。现在,当我们知道问题是什么,并且我们有一个答案 - “从A的onStart()重定向意图”。我该怎么做,是否有一些可靠的方法来确定B是否正在运行,因为如果它没有运行,我不想启动B.如果你知道你能否更新你的答案 – Erik

+1

嗯,我认为B总是在你提到“将意图重定向到B”并且它在A的onCreate()中完成时启动的,这就是为什么我建议将它移动到A的onStart )。如果假设不正确,请澄清并发布“重定向意向”代码 – ethan

+0

谢谢。我知道这是一个错综复杂的场景。 (B)发布后简单地杀死(A)/ finish(),我已经制定了一个工作解决方案。现在,如果我按HOME并再次打开Android画廊,将新(A)带入(B)堆栈。 – Erik