IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android应用退到后台,点击悬浮窗返回应用 -> 正文阅读

[移动开发]Android应用退到后台,点击悬浮窗返回应用


方案1:

? ? ? ? 系统设置中找到对应的应用,打开权限“后台弹出界面”,然后直接调用startActivity()方法
? ? ? ? 缺点:1、需要开启权限 2、部分手机没这个权限


方案2:

? ? ? ? 判断app是否在前台,如果不在前台调用moveTaskToFront()方法
????????上代码:判断是否在前台的方法

    private boolean isAppRunningForeground(Context context) {
        ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);

        assert activityManager != null;
        List<ActivityManager.RunningAppProcessInfo> runningAppProcessList = activityManager.getRunningAppProcesses();

        for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : runningAppProcessList) {
            if (runningAppProcessInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
                    && runningAppProcessInfo.processName.equals(context.getApplicationInfo().processName)) {
                return true;
            }
        }

        return false;
    }

将应用拉到前台
?

private Disposable disposable;

    private void moveAppToFront(Context context) {
        final ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
        assert activityManager != null;
        List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(100);
        for (final ActivityManager.RunningTaskInfo runningTask : runningTasks) {
            assert runningTask.topActivity != null;
            if (runningTask.topActivity.getPackageName().equals(context.getPackageName())) {
                activityManager.moveTaskToFront(runningTask.id, 0);

                 disposable = Observable.intervalRange(1, 5, 0, 1, TimeUnit.SECONDS).subscribe(aLong -> {
                     if(isAppRunningForeground(context)){
                         Logger.i(TAG,"moveTaskToFront success");
                         disposable.dispose();
                     }else {
                         Logger.i(TAG,"moveTaskToFront start");
                         activityManager.moveTaskToFront(runningTask.id, 0);
                     }
                 });


                break;
            }
        }
    }

缺点:一次不一定成功,需求设置拉取次数反复去moveAppToFront();如果到了自己设定的次数还没成功,就会失败(目前测试没失败过)

方案3:

? ? ? ? 参考跳转第三方应用方法,如果应用在后台调用下面方法将app拉到前台,这种方法回跳到app退到home之前到页面
?

Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
                                context.startActivity(intent);

缺点:部分手机拉起会慢几秒(测试效果与微信一样?)

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:18:44  更:2021-07-22 14:20:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 7:44:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码