android应用程序安装后点击打开带来的问题

  • Post author:
  • Post category:其他



前几天项目组反馈回来一个这样的情况

就是我在安装应用之后点击了打开 然后按home键 这个时候应用程序进入后台 我点击手机桌面的时候图片启动应用程序 程序重新再次启动 而不是后台的程序返回到前台;我查了相关资料,一直没有找到解决办法,感谢原文的作者:



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





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从业者的小悲哀.难道外国网站的代码里有敏感词???????????



*



*



* 参考资料:



*   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()"


);



}



}



版权声明:本文为busjb原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。