Android安裝應用後點擊"開啟"(Open)帶來的問題及解決方式

來源:互聯網
上載者:User

標籤:android   blog   http   java   使用   os   

MainActivity如下:
package cc.cc;import android.app.Activity;import android.content.Intent;import android.os.Bundle;/** * Demo描述: *  * 一年多前遇到一個問題--->: * 1 客戶從GooglePlay上下載了我參與的開發的應用 * 2 下載完成後,點擊安裝 * 3 安裝完成後,在螢幕底部有兩個選項"開啟"和"完成" * 4 點擊開啟 * 5 App進入到第一個Activity,此時簡單地操作:比如在一個EditText上輸入文字 * 6 按下HOME鍵 * 7 在案頭上找到該應用的ICON,點擊後進入應用 *  * 問題就在此時發生了,原先顯示在EditText的文字不見了........ * 當時是覺得很奇怪的.看了Log才知道原來是Activity重新 * 執行了onCreate()和onStart()以及onResume(). *  * 客戶抓著這個問題不放,我也一直半會給不出合理的解釋.怎麼辦呢? * 我測試了GooglePlay上的其餘幾款APP,也發現了同樣的問題.於是我給客戶說: * 這是Android系統的問題,很難解決.好在客戶通情達理沒有糾纏,這事也就過去了. * 但這個問題一直在我心裡埋著. *  * 最近偶然在CSDN上又看到一篇部落格在談論該問題.我於是去stackoverflow找答案. * 看到瞭解決的辦法,但是說實話,代碼我卻沒有看懂.最核心的這一句: * if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) * 我依然是一知半解.不甘心之餘問了幾位博友,亦無確切答案. * 暫作罷,期待以後有機會可以通解. *  * 我不是代碼的編寫者,我只是代碼的搬運工. * 從stackoverflow找的代碼,我就貼在下面了.同時給出資料出處. *  * PS:最近兩月一直無法使用Google,對於常要去一些外國網站找資料的IT人員來說確實不便. *    這或許是中國software從業者的小悲哀.難道外國網站的代碼裡有敏感詞??????????? *     *  * 參考資料: * 1 http://www.atlassc.net/?p=479 * 2 http://stackoverflow.com/questions/6337217/how-to-return-to-the-latest-launched-activity-when-re-launching-application-afte * 3 http://stackoverflow.com/questions/6356467/activity-stack-ordering-problem-when-launching-application-from-android-app-inst  * 4 http://flowercat.iteye.com/blog/380859 * 5 http://blog.csdn.net/nupt123456789/article/details/34415849 *   Thank you very much *    * 補充說明: * 在資料1中提到的核心思想---> * 我們需要判斷:該意圖是開啟一個新的任務,還是將背景應用給提到前台來. * 若是要將應用提到前台來直接將這個Activity結束掉,然後顯示出來的Activity就是之前被最小化的Activity. * 因為點擊表徵圖的意圖會將新啟動的Activity置於頂端,而頂端的下面的Activity就是之前被最小化的Activity. * 此時結束掉新啟動的Activity,就可以讓之前被最小化的Activity 顯示出來了. * */public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {  finish();return; }setContentView(R.layout.main);}@Overrideprotected void onStart() {super.onStart();System.out.println("---> onStart()");}@Overrideprotected void onResume() {super.onResume();System.out.println("---> onResume()");}}

main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"     >    <EditText        android:layout_width="130dip"        android:layout_height="40dip"        android:layout_centerInParent="true" /></RelativeLayout>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.