2013-05-14 90 views
2

我有一個應用程序用作工業過程的遠程控制,有3個活動A,B和GraphicsActivity。 A是主要活動,B是具有用戶可以訪問的附加功能的另一個屏幕。新活動關閉時如何返回到原始活動?

還有一個單獨的獨立類PCComms,它運行在它自己的線程中並處理與控制工業過程的PC的通信。 PC每隔一段時間都會向Android發送一個圖像以顯示,而PCComms將激發GraphicsActivity以將其顯示給用戶。用戶點擊一個按鈕關閉它。

這就是問題:當用戶關閉GraphicsActivity時,它總是返回到A,即使用戶當時在B中。

PCComms不是一個活動,只是一個通用類,所以它需要一個活動的背景下,所以我有得到由哪個活動更新了屏幕在被顯示圖形的時間上下文變量:

Intent intent = new Intent(curContext, GraphicsActivity.class); 
intent.putExtra("Caption", sGCaption);         
curContext.startActivity(intent); 

...我已經在調試器中證實curContext是B的上下文。 當GraphicsActivity啓動時,B的onPause()被調用,但當GraphicsActivty 完成() es時,不會調用B的生命週期事件。

相關清單條目。 。 。

<activity android:name="A" 
    android:launchMode="singleTask" 
    android:screenOrientation="portrait"> 
</activity> 
<activity android:name="B" 
    android:screenOrientation="portrait" 
    android:launchMode="singleInstance"> 
</activity> 
<activity android:name="GraphicsActivity" 
    android:screenOrientation="portrait" 
    android:launchMode="standard"> 
</activity> 

因此,如果我在B中打開GraphicsActivity時,如何在GraphicsActivity關閉時返回到B?

在此先感謝!

+0

從AndroidManifest.xml中發佈相關部件,其中定義了A,B和GraphicsActivity。 – ozbek

+0

當你打開GraphicsActivity時,你是在銷燬Activity B嗎? – slhddn

+0

@akguncse B的onDestroy沒有被調用,我無法想象爲什麼會這樣。 – user316117

回答

2

由於B是singleInstance,GraphicsActivity被放在任務堆棧因此,當你完成(),然後再回到A.你應該讓B標準,只要你撥打B可以使用FLAG_ACTIVITY_CLEAR_TOP。你也可以製作GraphicsActivity的singleInstance。

+0

一個有趣的問題。我以前沒有聽說過這樣的stg。謝謝你的信息:) – slhddn

相關問題