转载:http://www.2cto.com/kf/201407/319948.html

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 { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0 ) { finish(); return ; } setContentView(R.layout.main); } @Override protected void onStart() { super .onStart(); System.out.println( "---> onStart()" ); } @Override protected void onResume() { super .onResume(); System.out.println( "---> onResume()" ); } }

更多相关文章

  1. 常用的android studio插件
  2. 安卓源码搜集 文档(不断更新)
  3. Bluedroid的结构和代码分布
  4. android手机内部存储空间和外部存储空间获取代码
  5. Android(安卓)进程间通信实现原理分析
  6. 彻底解决Android(安卓)studio中文乱码问题
  7. Android创建一个Activity的方法分析
  8. android中的LayoutInflater简单运用
  9. Android双击退出的实现方法

随机推荐

  1. Android 并发之CAS(原子操作)简单介绍(五)
  2. Android搜索自动提示功能 AutocompleteTe
  3. Android系统应用不支持读写存储
  4. Android之相对布局
  5. Android之十三刮刮卡中奖功能
  6. 开机不锁屏
  7. Android API 中文(13) —— ToggleButton
  8. AndroidManifest.xml文件详解
  9. UI布局相关
  10. android 指纹