我的android应用程序的两个实例正在运行…如何避免这种情况?

这是我的问题 –

>我将我的.apk文件复制到手机存储卡上并点击它启动我的应用程序,它允许我安装我的应用程序.我安装我的应用程序.最后,我弹出系统安装包含两个选项“打开”和“完成”当我点击“打开”我的应用程序启动.到目前为止一切正常,没有任何问题.
>现在在我的应用程序中,我点击一个按钮,结果发生了一些下载(显示进度对话框).现在我按下一个Home按钮,所以我的应用程序转到后台.
>现在我再次启动我的应用程序,进入菜单并单击我的应用程序图标.
>预期结果 – 我仍然应该看到下载进度对话框.
实际结果 – 我的应用程序的新实例/会话正在开始.

那么如何避免这种情况,以便我的应用程序只能运行一个和一个实例/会话.

解决方法

@Palejandro,你在这里.将下面的代码放入主要活动onCreate()方法中:
// Possible work around for market launches. See
// http://code.google.com/p/android/issues/detail?id=2373
// for more details. Essentially,the market launches the main activity
// on top of other activities.
// We never want this to happen. Instead,we check if we are the root
// and if not,we finish.
if (!isTaskRoot()) {
    final Intent intent = getIntent();
    final String intentAction = intent.getAction();
    if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && intentAction.equals(Intent.ACTION_MAIN)) {
        Log.w(TAG,"Main Activity is not the root. Finishing Main Activity instead of launching.");
        finish();
        return;
    }
}

我在我的项目中使用了这段代码,它运行正常!

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...