返回顶部
首页 > 资讯 > 移动开发 >Android App保活的方式
  • 949
分享到

Android App保活的方式

android 2023-08-31 10:08:12 949人浏览 独家记忆
摘要

背景 在Android系统中,当应用程序进入后台或者被用户关闭后,系统会自动回收该应用程序的资源,以达到优化系统性能的目的。但是,有些应用程序需要在后台长时间运行,比如音乐播放器、即时通讯等,这时就需要使用一些技术手段来保持应用程序的运行状

背景

Android系统中,当应用程序进入后台或者被用户关闭后,系统会自动回收该应用程序的资源,以达到优化系统性能的目的。但是,有些应用程序需要在后台长时间运行,比如音乐播放器、即时通讯等,这时就需要使用一些技术手段来保持应用程序的运行状态,以确保应用程序能够正常运行。

本文将介绍一些常用的Android App保活的方式。

一、前台服务

前台服务是一种比较常用的保活方式,它可以将应用程序的服务提升到前台,使得系统不会轻易回收该服务。在前台服务中,可以通过Notification来显示应用程序的状态,以提醒用户该应用程序正在运行。

在实现前台服务时,需要注意以下几点:

  1. 在服务中调用startForeground()方法将服务提升到前台,并传入一个Notification对象。
  2. Notification对象需要设置合适的图标、标题、内容等信息,以便用户能够识别该服务的作用。
  3. 在服务不再需要运行时,需要调用stopForeground()方法将服务从前台移除。

示例代码

public class ForegroundService extends Service {    private static final int NOTIFICATION_ID = 1;    @Override    public int onStartCommand(Intent intent, int flags, int startId) {        Notification notification = new Notification.Builder(this)                .setContentTitle("App正在运行")                .setContentText("点击返回App")                .setSmallIcon(R.drawable.ic_launcher).build();        startForeground(NOTIFICATION_ID, notification);        return super.onStartCommand(intent, flags, startId);    }    @Nullable    @Override    public IBinder onBind(Intent intent) {        return null;    }}

 在Activity中启动前台Service:

 Intent intent = new Intent(this, ForegroundService.class); startService(intent); 

二、定时唤醒

定时唤醒是一种通过定时发送广播来唤醒应用程序的方式。在应用程序进入后台后,可以通过AlarmManager来设置定时任务,以便在一定时间后唤醒应用程序。

在实现定时唤醒时,需要注意以下几点:

  1. 在应用程序进入后台时,需要通过AlarmManager来设置定时任务,并传入一个PendingIntent对象。
  2. PendingIntent对象需要设置合适的Action、CateGory等信息,以便系统能够正确地识别该PendingIntent。
  3. 在定时任务触发时,系统会发送一个广播,应用程序需要在BroadcastReceiver中接收该广播,并进行相应的处理。

示例代码: 

public class KeepAliveReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        String action = intent.getAction();        if (Intent.ACTION_SCREEN_ON.equals(action)) {            // 屏幕亮屏             starTKEepAliveService(context);        } else if (Intent.ACTION_SCREEN_OFF.equals(action)) {            // 屏幕关闭             stopKeepAliveService(context);        } else if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {            // 网络状态变化             NetworkInfo networkInfo = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);            if (networkInfo != null && networkInfo.isConnected()) {                startKeepAliveService(context);            } else {                stopKeepAliveService(context);            }        }    }    private void startKeepAliveService(Context context) {        Intent intent = new Intent(context, KeepAliveService.class);        context.startService(intent);    }    private void stopKeepAliveService(Context context) {        Intent intent = new Intent(context, KeepAliveService.class);        context.stopService(intent);    }}

在AndroidManifest.xml中注册广播接收器:

三、双进程守护

双进程守护是一种通过启动两个进程来保持应用程序的运行状态的方式。在应用程序进入后台时,可以通过启动一个守护进程来保持应用程序的运行状态。

在实现双进程守护时,需要注意以下几点:

  1. 在应用程序进入后台时,需要启动一个守护进程,并将该进程的优先级设置为较高。
  2. 守护进程需要定时检测主进程是否存活,如果主进程已经被回收,则需要重新启动主进程。
  3. 在主进程中,需要通过Binder机制将主进程和守护进程进行通信,以便守护进程能够及时检测主进程的状态。

示例代码:

主进程:

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        startDaemonProcess();    }    private void startDaemonProcess() {        Intent intent = new Intent(this, DaemonService.class);        startService(intent);    }}

守护进程:

public class DaemonService extends Service {    private static final String TAG = "DaemonService";    @Override    public int onStartCommand(Intent intent, int flags, int startId) {        Log.d(TAG, "onStartCommand: ");        startForeground();        startMainProcess();        return super.onStartCommand(intent, flags, startId);    }    private void startForeground() {        Notification notification = new Notification.Builder(this)                .setContentTitle("App正在运行")                .setContentText("点击返回App")                .setSmallIcon(R.drawable.ic_launcher)                .build();        startForeground(1, notification);    }    private void startMainProcess() {        String packageName = getPackageName();        String className = MainActivity.class.getName();        Intent intent = new Intent();        intent.setClassName(packageName, className);        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        startActivity(intent);    }    @Nullable    @Override    public IBinder onBind(Intent intent) {        return null;    }}

在AndroidManifest.xml中注册守护进程:

 

四、JobScheduler

JobScheduler是一种Android系统提供的调度器,可以用来执行一些延迟任务或者周期性任务。在应用程序进入后台时,可以通过JobScheduler来设置一个延迟任务,以便在一定时间后唤醒应用程序。

在实现JobScheduler时,需要注意以下几点:

  1. 在应用程序进入后台时,需要通过JobScheduler来设置一个延迟任务,并传入一个JobInfo对象。
  2. JobInfo对象需要设置合适的延迟时间、执行条件等信息,以便系统能够正确地执行该任务。
  3. 在任务触发时,系统会发送一个广播,应用程序需要在BroadcastReceiver中接收该广播,并进行相应的处理。

总结

以上是Android App保活的一些常用方式,不同的应用程序可以根据自己的需求选择合适的方式来保持应用程序的运行状态。需要注意的是,保活过程中需要合理使用系统资源,以避免对系统性能造成影响。

来源地址:https://blog.csdn.net/u010351988/article/details/131061566

--结束END--

本文标题: Android App保活的方式

本文链接: https://lsjlt.com/news/385159.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android App保活的方式
    背景 在Android系统中,当应用程序进入后台或者被用户关闭后,系统会自动回收该应用程序的资源,以达到优化系统性能的目的。但是,有些应用程序需要在后台长时间运行,比如音乐播放器、即时通讯等,这时就需要使用一些技术手段来保持应用程序的运行状...
    99+
    2023-08-31
    android
  • Uniapp-APP后台保活插件(安卓后台保活)
    目录 1.插件导入项目 2.项目中使用保活插件 3.打包自定义调试基座 4.代码配置 5.项目运行 6.测试效果 相关插件:安卓保活 1.插件导入项目         注:可以先试用哦,大佬直接购买也可以哦!我是先试用的哦。       ...
    99+
    2023-09-12
    android javascript 开发语言
  • 详解Android进程保活的方法
    关于 Android 平台的进程保活这一块,想必是所有 Android 开发者瞩目的内容之一。你到网上搜 Android 进程保活,可以搜出各种各样神乎其技的做法,绝大多数都是...
    99+
    2022-06-06
    方法 Android
  • 详解App保活实现原理
    目录概述保活的底层技术原理实现方法改进空间如何在 native 层进行 binder 通信如何应对系统如何应对用户如何应对总结概述 早期的 Android 系统不完善,导致 App ...
    99+
    2024-04-02
  • 详解App保活技术实现
    目录前言黑科技进程保活原理Java 层复活进程在 native 层进行 binder 通信方式一 利用 libbinder.so 与 ActivityManagerService 通...
    99+
    2024-04-02
  • App保活实现原理是什么
    小编给大家分享一下App保活实现原理是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!概述早期的 Android 系统不完善,导致 App 侧有很多空子可以钻,...
    99+
    2023-06-15
  • Android App中各种数据保存方式的使用实例总结
    少量数据保存之SharedPreferences接口实例 SharedPreferences数据保存主要是通过键值的方式存储在xml文件中 xml文件在data/此程序的包名/...
    99+
    2022-06-06
    数据 app Android
  • Android 应用进程保活方案实战
    前台服务:将应用运行的服务设置为前台服务,让用户知道应用正在后台运行,系统会给予一定的优先级,减少被系统杀掉的概率。但是需要注意,使用前台服务保活不能大量占用用户的通知栏,否则用户可能会感到烦躁而卸载应用。 JobScheduler:A...
    99+
    2023-08-31
    android java 开发语言
  • 修改Android App样式风格的方法
    android中可以自定义主题和风格。风格,也就是style,我们可以将一些统一的属性拿出来,比方说,长,宽,字体大小,字体颜色等等。可以在res/values目录下新建一个s...
    99+
    2022-06-06
    方法 app Android
  • Android App开发方式有哪几种
    Android App的开发方式有以下几种: Native开发:使用Java或Kotlin编写代码,并使用Android SDK...
    99+
    2024-02-29
    Android
  • android保存数据的方式有哪些
    Rate limit reached for gpt-3.5-turbo in organization org-68Lqb4iD2...
    99+
    2023-10-18
    android
  • 如何对Android中的进程进行保活
    本篇文章给大家分享的是有关如何对Android中的进程进行保活,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。保活手段当前业界的Android进程保活手段主要分为 黑、白、灰 三...
    99+
    2023-05-31
    android 进程保活 roi
  • 详解Android App中的AsyncTask异步任务执行方式
    基本概念 AsyncTask:异步任务,从字面上来说,就是在我们的UI主线程运行的时候,异步的完成一些操作。AsyncTask允许我们的执行一个异步的任务在后台。我们可以将耗时...
    99+
    2022-06-06
    asynctask app Android
  • PyCharm2019 激活方式
    1、修改hosts激活:需要修改hosts,稳定无影响,持续更新,推荐~ 一、修改hosts激活 1.修改hosts文件将0.0.0.0 account.jetbrains.com和0.0.0.0 www.jetbrains.com添加到...
    99+
    2023-01-31
    方式
  • android实现App活动定时自动跳转效果
    App的小功能点,很简单几十行代码就可以实现 主页面代码 package com.buildingbuilding; import android.content.Inte...
    99+
    2022-06-06
    自动跳转 自动 app Android
  • Android 后台运行白名单实现保活
    保活现状 我们知道,Android 系统会存在杀后台进程的情况,并且随着系统版本的更新,杀进程的力度还有越来越大的趋势。系统这种做法本身出发点是好的,因为可以节省内存,降低功耗...
    99+
    2022-06-06
    后台运行 运行 白名单 Android
  • Android App系统签名的方法
    Android App系统签名的方法 Android应用程序系统签名是确保应用程序安全性和完整性的重要步骤。通过对应用进行系统签名,可以验证应用来源,并防止任何未经授权的修改。在本文中,我们将介绍An...
    99+
    2023-09-29
    android Android
  • Android App实现监听软键盘按键的三种方式
    前言: 我们在Android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“Go”按键加载url页面;在点击搜索框的时候...
    99+
    2022-06-06
    监听 app 软键盘 Android
  • 分析Android App中内置换肤功能的实现方式
    Android平台api没有特意为换肤提供一套简便的机制,这可能是外国的软件更注重功能和易用,不流行换肤。系统不提供直接支持,只能自行研究。 换肤,可以认为是动态替换资源(文...
    99+
    2022-06-06
    app Android
  • Vue页面保活方法是什么
    本篇内容主要讲解“Vue页面保活方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue页面保活方法是什么”吧!为了让页面保活更加稳定,你们是怎么做的?我用一行配置实现了Vue页面保活是指...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作