2016-06-22 197 views
0

我有兩個android活動(讓我們稱他們爲A1和A2)。第一個目的是顯示幾個線性佈局項目。還有一個按鈕來添加新的項目。當採用下面這種意圖上添加按鈕點擊:android活動不暫停

//... 
Intent intent = new Intent(this, CreateActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
//... 

應用程序應該切換到A2 暫停第一個。當訪問A2上的類型時,我使用以下方式切換回A1:

//... 
Intent intent = new Intent(super.getContext(), HomeActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
intent.putExtra("type", this._type); 
super.getContext().startActivity(intent); 
//... 

意圖,將新項目添加到工作的佈局。 現在我已經有了每次從A2切換到A1時調用的onCreate, onResume, onPause方法。這是正常的Android行爲?

據我瞭解的活動週期的標誌NEW_TASK,並CLEAR_TASK開闢一個新的進程暫停,他們是所謂的活動。

我讀過幾個不同的單證有關切換android系統中的活動,但沒沒有真正明白如何明確地告訴一個Activity只是暫停而不是再次調用onCreate等。

+0

爲什麼你使用Intent.FLAG_ACTIVITY_NEW_TASK&Intent.FLAG_ACTIVITY_CLEAR_TASK? –

+0

這些的目的是明確告訴android創建一個新的任務暫停A1。第二個應該終止任務並返回到A1觸發onResume。 – hGen

+0

比你可以只刪除意圖標誌線,並從A2活動調用this.finish()時,它會完成他們的任務 –

回答

1

我覺得這裏的活動A1創造的2倍,因爲ü有一個,然後再創建一個在A2的活性,使美國可以剛開始活動A2不

(Intent.FLAG_ACTIVITY_NEW_TASK) 

標誌,並於當您需要回A1呼叫

A2.this.finish() 

認爲這將有助於和A1的onPause將開始打電話

+0

我可以使用'finish()' – hGen

+0

轉移一個額外的東西嗎?你應該開始活動A2並且在它完成他的工作之後請致電 A2.this.finish()從完成工作的點開始,A2將從堆棧中彈出,並且A1再次成爲頂層,並且您將不需要創建新的A1活動,因爲您有另一個堆棧 –

1

OnPause()被稱爲當活動是部分可見給用戶,但用戶無法與之交互。就你而言,當下一個活動啓動時,第一個活動將調用onStop()。僅在屏幕中顯示警告框或對話框bix時調用onPause()。嘗試在onStop()中編寫代碼。

1

現在我已經有了onCreate,onResume,onPause方法,每次我從A2切換到A1時都會調用它。

這是正常的,因爲你查詢與重建活動super.getContext().startActivity(intent);

只需撥打finish A2的內部返回A1。

您還可以將國旗Intent.FLAG_ACTIVITY_REORDER_TO_FRONT設置爲意圖。 A2活動不會被破壞。

0
  1. FLAG_ACTIVITY_NEW_TASK - >此標誌將啓動新的活動所以首先刪除此。如果你想通過下面的方法,而不是startActivity()

startActivityForResult

而且你會在

得到一個回調發送一些數據,那麼A2至A1,然後startActivity
  • onActivityResult()