在設定了android:parentActivityName後,點擊子Activity返回鍵,父Activity總會調用OnDestroy()的解決方案

來源:互聯網
上載者:User

標籤:des   android   style   io   ar   color   os   sp   strong   

最近查了很久這個事情,分享給大家,

原理很簡單,一個Activity在manifet裡聲明了android:parentActivityName;這時候通過Activity左上方的返回按鈕點擊返回,

啟動聲明的父Activity,總會先調用父Activity的OnDestroy方法,具體如下面所說:


    <activity        android:name="com.example.helloworld.DisplayMessageActivity"        android:label="@string/title_activity_display_message"        android:parentActivityName="com.example.helloworld.MainActivity" >        <meta-data            android:name="android.support.PARENT_ACTIVITY"            android:value="com.example.helloworld.MainActivity" />    </activity>
DisplayMessageActivity為子Activity,而MainActivity為父Activity,點擊
DisplayMessageActivity的左上方返回按鈕的時候,調用邏輯如下:
MainActivity.onDestroy()MainActivity.onCreate(null)MainActivity.onStart()
解決方案是:
為設定MainActivity屬性android:launchMode=singleTop
順便腦補android:parentActivityName的作用,就是為了左上方給子Activity加一個返回按鈕,具體資訊如下:
Android 4.1提高效能、增強使用者體驗  App 棧導航:通過設定android:parentActivityName改變回退棧的內容,如果棧中沒有parentActivity,則合成棧,通過onPrepareNavigateUpTaskStack()改變parentActivity中的內容。

在設定了android:parentActivityName後,點擊子Activity返回鍵,父Activity總會調用OnDestroy()的解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.