`

关于按home键应用退出问题

阅读更多
 
 
 
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()");
    }
     
     
}
 
转载自:http://www.2cto.com/kf/201407/319948.html
分享到:
评论

相关推荐

    ios-仿虎牙TV画中画功能,按home键退出后台依然可以播放.zip

    使用AVPlayer进行视频播放,小窗口播放,退出视频后画中画播放,模仿虎牙iPad客户端,即使按home键退出到后台,依然可以播放,实现画中画功能,可以在做其他操作的同时打开其他应用的同时来观看视频,必须在iPad上面...

    模拟按Home键退出应用的简单方法(分享)

    下面小编就为大家带来一篇模拟按Home键退出应用的简单方法(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Android应用开发中模拟按下HOME键的效果(实现代码)

    Android应用开发中, 有一种场景,就是我们不希望用户直接按Back键退出Activity,而是希望应用隐藏到后台,类似于按Home键的效果

    Android编程之退出整个应用程序的方法

    我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序,没有释放系统资源。有时跳转的activity较多时,还需要多次按返回键,这样感觉一点都不爽。 后面添加了一个菜单返回...

    Android中home键和back键区别实例分析

    Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity,当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法...

    实现qq中按返回键返回桌面不退出程序的实例

    在实际应用中,很可能我们希望自己的app在按下返回键的时候并不退出,而是像按home键一样仅仅返回桌面,而程序仍然在后台运行着。要怎么实现这个效果呢?很简单,只需要重写一下onBackPressed方法就可以了。 如下所...

    Linux命令参数的应用

    3.当编辑或者写入完成之后,首先退出编辑模式--->按下esc键 4.只有退出编辑模式后才可以进行保存并退出的操作: :w 保存 :wq 保存并退出 :wq! 强制保存并退出 :q 退出 :q! 强制退出 dd 删除一行文字 x 删除一个字符 ...

    简单手机桌面管理小程序demo

    3、显示的程序可以直接启动,退出,Home键会到本程序,多任务键可回到启动程序。 4、屏蔽设置应用,从下拉菜单,多任务键,显示应用进入无效。 5、提供设置功能:管理者输入密码,跳设置界面,可选择切换桌面。 6、...

    浅谈android性能优化之启动过程(冷启动和热启动)

    2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动...

    Android代码-ColdStart

    当启动应用时,后台已有该应用的进程(常见如:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用 ...

    homeassistant-desktop:with使用Electron构建的用于Home Assistant的桌面应用程序(Windows macOS Linux)

    家庭助理-桌面使用构建的用于桌面应用程序(Windows / macOS / Linux)安装只需从下载适用于您平台的最新版本以安装Home Assistant。用途/功能悬停/单击任务栏图标以打开应用程序支持家庭助手的多个实例(包括自动...

    Linux中的jdk8以及安装教程.zip

    先按Esc键,再按Shift+":"(shift键和冒号) 然后输入WQ,保存完成。 退出,输入java -version。 看是不是输出版本号信息。 如果输出,java环境配置成功。 JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式...

    Android优化应用启动速度

    2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动...

    ios-用户返回应用需要输入密码.zip

    用户从任何一个界面按home键退出,再过一段时间从后台切回来,显示一个输入密码界面,只有用户输入正确的密码,才能进入推出前的界面,我们用一个集成自UIWindow的子类PasswordInputWindow,完成界面显示和逻辑;

    NO.1 Android 从$AppViewScreen说起

    $AppEnd事件: 指应用退出的情况,包括正常退出,按home键退出,应用被强杀,应用崩溃的等情况。 $AppViewScreen事件: 指应用程序的页面浏览,对于 Android应用程序来说就是切换activity和fragment。 AppClick事

    这是在学习Linux的过程中,在Linux机器上写的代码.rar

    ctrl + c 退出应用。 tab键,信息补全。 安装拖入进Linux 压缩包的命令 移动 拖拽 [root@localhost home]# yum -y install lrzsz [root@localhost home]# yum install lrzsz 安装 wget yum install wget 要...

    UMcall免费语音软件 For Android v2.2.1108.zip

    UMcall - 免费通话软件:  UMcall是基于互联网络免费通话和收发消息的软件, 适用于2G/3G/WiFi 网络,双方安装即可通话。... 1、修改通话过程中按home键退出不能回到通话界面的问题  2、优化通话质量。

    Android启动优化

    2、热启动:就是后台存在当前应用的进程(如按下Home键,退出应用), 再次点击打开应用,这个过程不需要创建进程,也不需要初始化application,也不需要初始化activity。 3、温启动:应用进程还在,可能因为系统...

    laz-JSON-Viewer:Lazarus JSON查看器

    在Linux上, Ctrl+Q组合键退出应用程序。 在Windows上, Atl+X组合键退出应用程序。 设置为默认查看器 Linux(Ubuntu) 我在系统上执行此操作的快捷方式是: 在$HOME/.local/share/applications下创建一个名为json...

Global site tag (gtag.js) - Google Analytics