精华内容
下载资源
问答
  • 2021-05-26 15:29:20

    我正在创建一个应用程序,我需要始终通过TCP套接字连接.我的应用程序已经在连接方面运行良好,但是当它被发送到后台时,

    android系统最终会杀死进程.这会导致它与服务器断开连接.

    我一直在寻找一种方法来始终保持应用程序活着,但没有找到任何东西.

    有人可以告诉我什么是最好的方法,以便我的应用程序在后台时不会关闭,或者,除非这样,如果它关闭,让它重新启动?

    我从这开始就让我头疼:S

    编辑

    这是我的代码的一部分:

    public int onStartCommand(Intent intent, int flags, int startId) {

    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();

    new Thread(new Runnable() {

    public void run() {

    Playit(); }

    }).start();

    return START_STICKY;

    }

    不过,该应用程序似乎在启动时被冻结.我没有很多经验,所以也许我的错误很简单,我没有注意到它.

    更多相关内容
  • 当有一个重要的APP应用需要及时收到消息通知时 可以这样操作 确认锁屏保持网络连接的开关已打开 方法:进入设置>电池>更多电池设置,打开休眠时始终保持网络连接开关 确认手机管家中APP已开启手动管理 方法:...

    当有一个重要的APP应用需要及时收到消息通知时

    可以这样操作

    确认锁屏保持网络连接的开关已打开

    方法:进入设置>电池>更多电池设置,打开休眠时始终保持网络连接开关

    确认手机管家中APP已开启手动管理

    方法:进入手机管家>应用启动管理,找到APP应用,关闭“自动管理”,打开“手动管理”,并允许自启动、关联启动、后台活动。

    或者 进入设置>应用和服务>应用启动管理,打开“手动管理”,并允许自启动、关联启动、后台活动。

    开启系统通知亮屏提示

    方法:进入设置>通知>更多通知设置>通知亮屏提示,打开通知亮屏提示开关

    APP设置为允许通知

    方法:进入设置>通知>软件下找到对应APP>允许通知的各个开关

    APP设为不允许电池优化

    方法:进入设置>应用>权限管理>右上角三个点>特殊访问权限>电池优化>某APP,设置为不允许。

    展开全文
  • LabVIEW应用程序后台运行

    千次阅读 2022-05-03 11:40:27
    本篇博文分享LabVIEW虽然不常用但是很有意思的一个开发技巧:应用程序后台运行运行程序后自动隐藏前面板窗口和任务栏图标。

    目录

    1、隐藏VI前面板窗口

    2、隐藏任务栏图标


    本篇博文分享LabVIEW虽然不常用但是很有意思的一个开发技巧:应用程序后台运行。运行程序后自动隐藏前面板窗口和任务栏图标。

    实现方法依旧很简单,分为两步:

    1、隐藏VI前面板窗口

    隐藏VI前面板窗口程序设计很简单,如下所示:

    下面详细介绍一下实现过程和方法。

    第1步:添加“当前VI路径”获取本VI的路径信息:函数→ 编程→文件常量→当前VI路径,如下图所示:

    第2步:添加“打开VI引用函数”来打开该顶层VI的引用:函数→ 编程→ 应用程序控制子面板→ 打开VI引用函数,如下图所示:

    第3步:添加“调用节点”,并将VI的引用连接到一个调用节点的输入端:函数→ 编程→ 应用程序控制→ 调用节点,如下图所示:

    第4步:选择“打开前面板方法”并且选择前面板状态为隐藏后,添加“关闭引用节点”来关闭VI的引用:函数 → 编程→ 应用程序控制→ 关闭引用,如下图所示:

    2、隐藏任务栏图标

    在应用程序文件夹中找到“应用程序文件名”.ini文件(根据用户自定义名称,这里所说仅是我自己定义的名称),打开后在最后添加:HideRootWindow = True,如下图所示:

    展开全文
  • 网上关于保证Service在后台持续运行的方法有很多,但有些其实作用并不大,仅适合原生系统 实际Service的运行,不完全是由代码控制的,很大程度上取...在系统设置-启动管理里面,允许应用后台运行运行应用自启动 ...

    网上关于Service保活和进程保活的文章有很多,但其实大多作用并不大
    这些文章大多是只适合很久以前的旧系统,或者是原生的安卓系统,更多的是以讹传讹,未经实践,实际并不可用

    实际Service的运行,不完全是由代码控制的,很大程度上取决于操作系统的进程管理策略,手机系统、手机性能息息相关

    这里根据我的经验总结出的一些可行的方案,在中高端机型上,基本都能保证Service在后台运行

    锁定后台应用

    这个功能允许应用在后台运行,不被清理,可以点击任务键,再点击带锁图标的菜单开启

    这个不是安卓系统原生的功能,不同的操作系统有不同的打开方法,一般都要点击任务键

    在这里插入图片描述

    在系统设置-启动管理里面,允许应用后台运行

    这个设置允许应用进程在切换到后台时继续运行,但是每个手机的设置方法都有所不同

    这里以华为手机为例,有的手机上叫应用启动管理,有的叫后台运行管理,有的叫电池优化

    安卓系统定制版本太多了,大家需要自己动手多研究下,把系统设置里面权限应用电池相关的选项都过一遍就能找到

    在这里插入图片描述
    允许应用后台获取位置信息

    这对于有定位功能的应用来说很重要,即便应用进程存活,系统也可能限制定位来达到省电目的
    安卓从10.0开始,增加了一个后台定位权限管理功能(Manifest.permission.ACCESS_BACKGROUND_LOCATION)
    需要在Manifest清单中配置此权限,并通过代码动态申请此权限,否则息屏后就会立刻停止定位

    在这里插入图片描述
    关闭电源优化功能

    系统对后台进程和定位进行限制,无非为了两个目的,一个是节省CPU和内存,另一个是续航
    随着手机性能越来越好,很多高端手机已经不存在性能问题,但是电量消耗问题仍然是存在的

    尤其对于定位,视频,屏幕亮度这些功能,大家如果有留意就会知道,它们会明显地大幅提示电量消耗速度
    对于有电源优化设置的手机,大家一定要关闭电源优化
    也有一些比较简单的系统,会把后台运行等设置都归到电源优化功能里面来

    在这里插入图片描述

    将服务设置为前台服务

    这个功能将后台服务转为前台服务,从而避免被系统清理,这个功能对服务保活效果显著,同样也能提升整个进程的存活率
    但相应地,必须将服务与一个前台通知绑定,服务存活期间通知会一直显示,以便告之用户后台应用在运行

    
    	service.startForeground(id, notification);
    
    

    监听系统广播重新启动

    我们可以通过静态注册一个广播接收器,去监听一些比较广播频次比较高系统广播,比如电量更新广播
    当系统发出这些广播时,广播接收器就会被唤起,然后我们在Receiver里面重新启动Service即可

    不过可惜,从安卓8.0开始,静态广播已经受到了严格限制,这个方法现在已经行不通了
    如果所有应用都按这种方法做,系统只要一发广播,就会启动一批应用,非常消耗性能和电量
    所以从安卓8.0开始,发送静态广播必须指定包名和接收器的类名,只有特定应用可以收到,而不再是群发
    我之所以还把它写出来,是因为它代表了一种通用的解决思路,这个思路在其它操作系统中也许是可行的

    多进程守护

    即开启两个或更多个进程,彼此之间定时相互启动,除非两个进程同时被杀,否则就可以达到一直存活的目的

    不过很遗憾,安卓系统从6.0之后,在杀死进程时,会按照包名,将同一个应用下的所有子进程同时杀死
    所以这个方法对于进程复活来说,效果并不理想,但是对于复活Service来说,还是可行的

    
    	//定义一个保活服务基类,服务之间定时相互启动
    	//当服务被启动时,服务所在的进程,自然也随之被唤起
    	public class KeepAliveService extends Service {
    	
    	    public Class<? extends Service>[] services() {
    	        return new Class[]{SA.class, SB.class};
    	    }
    	
    	    @Override
    	    public void onCreate() {
    	        super.onCreate();
    	        WorkThread.postByLoop(() -> {
    	            for (Class<? extends Service> service : services())
    	                startService(new Intent(this, service));
    	            Threads.sleep(5000);
    	        });
    	        Notification notification = Notifications.buildForegroundNotification("应用正在后台运行");
    	        startForeground(Codes.CODE_BACKGROUND_RUNNING, notification);
    	    }
    	
    	    @Override
    	    public int onStartCommand(Intent intent, int flags, int startId) {
    	        Console.info(getClass().getSimpleName(), Applications.currentProcessName(), Applications.currentProcessId(), hashCode());
    	        return Service.START_STICKY;
    	    }
    	
    	    @Nullable
    	    @Override
    	    public IBinder onBind(Intent intent) {
    	        return null;
    	    }
    	}
    
    
    
    	public class SA extends KeepAliveService {
    	
    	    @Override
    	    public int onStartCommand(Intent intent, int flags, int startId) {
    	        Console.info("SA execute its work");
    	        return super.onStartCommand(intent, flags, startId);
    	    }
    	}
    
    
    
    	public class SB extends KeepAliveService {
    	
    	    @Override
    	    public int onStartCommand(Intent intent, int flags, int startId) {
    	        Console.info("SB execute its work");
    	        return super.onStartCommand(intent, flags, startId);
    	    }
    	}
    
    
    
    	<service
    	    android:name=".SA"
    	    android:exported="true"
    	    android:process=":aaa" />
    	
    	<service
    	    android:name=".SB"
    	    android:exported="true"
    	    android:process=":bbb" />
    
    
    
    	//在主进程启动所有服务
    	startService(new Intent(this, SA.class));
    	startService(new Intent(this, SB.class));
    
    

    通过JobScheduler拉活进程

    JobScheduler用于在系统中注册一个定时任务,可以定时启动一个JobService
    所以只要我们的服务继承JobService,就可以定时被JobScheduler唤起

    当然,和其它的功能一样,安卓系统肯定是不可能允许应用通过JobScheduler来作弊,在后台一直运行的
    实际上,JobScheduler最快也得15分钟才能唤醒一次任务,JobService最多只能工作10分钟就会被杀死
    JobScheduler设计出来并不是让用户肆意滥用的,而是给那些需要定时工作,但是工作频次小,工作时间短的功能设计的

    虽然JobScheduler不能保证进程一直存活,但却可以起到定时拉活进程的目的,我们再配合其它技术一起使用,就可以达到一个比较好的效果
    毕竟,服务和进程并不会一启动就会被系统杀死,我们将进程拉活和进程守护功能结合起来,就可以保证进程在大多时间都在工作

    
    	//在触发JobScheduler任务时,启动指定Service来拉活进程
    	public class SJ extends JobService {
    	
    	    public Class<? extends Service>[] services() {
    	        return new Class[]{SA.class, SB.class};
    	    }
    	
    	    @Override
    	    public boolean onStartJob(JobParameters params) {
    	        for (Class<? extends Service> service : services())
    	            startService(new Intent(this, service));
    	        return false;
    	    }
    	
    	    @Override
    	    public boolean onStopJob(JobParameters params) {
    	        return true;
    	    }
    	}
    
    
    
    	//在主进程启动所有服务
    	startService(new Intent(this, SA.class));
    	startService(new Intent(this, SB.class));
    	
    	//启动JobScheduler任务来定时拉活Service进程
    	startKeepAliveJob(1001, SJ.class);
    	
    	//开启一个用于拉活的JobScheduler任务
    	public void startKeepAliveJob(int jobId, Class<? extends JobService> service) {
    		ComponentName componentName = new ComponentName(getPackageName(), service.getName());
    		JobInfo.Builder builder = new JobInfo.Builder(jobId, componentName);
    		builder.setPeriodic(15 * 60 * 1000);
    		builder.setPersisted(true);
    		JobInfo jobInfo = builder.build();
    		JobScheduler scheduler = getSystemService(JobScheduler.class);
    		scheduler.schedule(jobInfo);
    	}
    
    
    
    	<service
    	    android:name=".SA"
    	    android:exported="true"
    	    android:process=":aaa" />
    	
    	<service
    	    android:name=".SB"
    	    android:exported="true"
    	    android:process=":bbb" />
    	
    	<service
    	    android:name=".SJ"
    	    android:exported="true"
    	    android:permission="android.permission.BIND_JOB_SERVICE"
    	    android:process=":job" />
    
    

    设置服务以粘性模式启动

    STICKY模式的服务,会在进程意外中断时,自动重新启动

    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            return START_STICKY;
        }
    
    

    综合各种方法技巧

    进程保活并不是一个100%稳定的技术,但是以上的措施都会起到一些作用,有的作用其实非常明显
    将它们结合起来,基本可以保证应用在后台常驻,千万不要偷懒,奢望只用一个方法就能达到目的

    展开全文
  • 如何使应用保持后台运行

    千次阅读 2016-01-10 18:14:00
    操作系统会允许这个应用程序在后台保持运行状态(能够持续的时间是不确定)   UIBackgroundTaskIdentifier taskID = [application beginBackgroundTaskWithExpirationHandler :^{   // 后台...
  • 如何你的App永远在后台存活:对Android进程守护、闹钟后台被杀死的研究。 最近公司要求要做一个提醒功能,一说到提醒,那肯定就和闹钟差不多的意思,那么肯定就要用到AlarmManager。 但是,我们知道,android...
  • uniapp退出应用改为留在后台运行

    千次阅读 2021-11-09 11:01:16
    项目中要求点击退出,只是退出应用,再次点击不用登录可以进入 let main = plus.android....//重写toast方法如果内容为 ‘再次返回退出应用’ 就隐藏应用,其他正常toast plus.nativeUI.toast = (funct...
  • Spring Boot非Web项目保持运行的方法

    千次阅读 2020-06-11 15:31:41
    有时候一些项目并不需要提供 Web 服务,例如跑定时任务的项目,如果都按照 Web 项目启动未免画蛇添足浪费资源为了达到非 Web 运行的效果,首先调整 Maven 依赖,不再依赖 spring-boot-starter-web,转而依赖最基础的...
  • iOS 保持APP在后台长时间运行

    万次阅读 2018-12-05 15:10:34
    官方网站: ...一、iOS 应用程序5个状态 1、停止运行-应用程序已经终止,或者还未启动。 2、不活动-应用程...
  • Unity 导出安卓让应用后台运行

    千次阅读 2017-07-04 17:28:31
    1.点击home键进入后台运行: 在AndroidManifest 中加入 : android:configChanges=”fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|...
  • Android 设备在黑屏的分钟后可能会发生多种情况:应用程序切后台后进程资源被系统回收,导致不能持续定位。解决办法:长连接定时唤醒cpu(解决黑屏定位、黑屏断网问题)对于原生Android系统可采用google给出的提升后台...
  • 退回后台是执行了home键,activity分别执行了onPause和onStop,应用没有被销毁,退回后台而已,再次运行应用只要执行onResume就可以了。  完全退出,执行finish,activity会执行onPause,onStop和on
  • Android后台服务在屏幕休眠保持运行

    千次阅读 2020-05-05 20:27:31
    Android App中的Service可以保持后台运行,比如音乐播放就是Service的典型应用,在开发移动APP时,很多业务场景需要用到Service保持在后台运行,在实现过程中Service在屏幕休眠下继续保持运行,往往没有按照预期...
  • react native Android端保持APP后台运行--封装 Headless JS前些日子在做后台下载时踩了后台运行这个大坑,RN官网文档上面在安卓上提供了Headless JS方法,iOS上暂时没有提供后台运行的方法,不过众所周知,官网上面的...
  • sipjs+FreeSWITCH+webrtc电话呼入、呼出、转移、保持网页端的应用 备注:谷歌浏览器下运行,更改自己的分机、密码、服务器地址,可直接进行功能测试,更详细深入学习参考:http://sipjs.com/
  • iOS程序一直在后台运行

    千次阅读 2016-12-23 00:01:19
    那么如何保证一个应用程序进入后台以后一直保持活跃呢??通常最常见的方法就是在后台播放一段音频(没有声音),因为AVPlayer这个类进入后台以后可以保证程序不死。 首先我们需要在- (BOOL)application:...
  •         ...然后,我将向您展示如何在Android模拟器或实际设备(在本例中为Kindle Fire平板电脑)上设置和运行应用程序。我还将向您展示如何解决Androi
  • 详细介绍Windows11 一个著名特性:安卓子系统 从安装到使用的全过程,涵盖各种可能遇到的错误和障碍,并给出详细的解决方案。通过亲身经历记录各种会遇到的情况,大家更方便、快捷地使用该功能。
  • android 如何自己的App一直运行

    千次阅读 2018-08-15 15:25:54
    主要看第二个方法:(A,Bservice在两个进程中,所以要用到AIDL来跨进程) 在原本只有一个serviceA的情况下再声明一个serviceB,并为之新开启一个进程; serviceA被杀死的时候,serviceB立刻重启serviceA;...
  • 如何设置电脑锁屏后程序仍在运行

    万次阅读 2021-12-28 19:29:19
    发现电脑锁屏后程序不再运行了,重新将电脑设置锁屏后仍运行,如下: 1. 同时按下win+R 打开 运行 界面 2.输入control,打开控制面板 3. 打开 硬件和声音,并进入 4. 选择 电源选项,并进入 5. ...
  • 除了一直屏幕亮着,有其他方法吗???看到一个11年的帖子有同样问题,可是楼主最后却没说解决方法……那个帖子提到服务可以不受影响,我试过不行啊。 初学者,这个问题也许对各位很简单,可是困扰了我很长时间了...
  •  有时为了,能够给用户更好的体验,需要app退出界面后,app在后台运行。(当然这可能还需要实现 常驻内存,可以点击这里查看 常驻内存实现)  react native 提供backAndroid pai,可以我们使用后发现。该pai的退出...
  • 一些体验上的优化一:app 退出时, app 在后台运行...一:app 退出时, app 在后台运行,类似于 home 键的功能,最小化 重写 onkeydown 和 onBackPressed 方法,主要是 movetoBack 方法。 注意在 MainActivity ...
  • 考虑到我们是请一些人帮忙装上应用的,所以主要是想用户将应用添加到保护名单中,来保证应用正常运行时能够长不被清理掉。 【功能】Service做的事情包括:监听亮屏息屏、获取加速度传感器数据、调用百度SDK获取...
  • bat文件后台运行

    万次阅读 2019-02-18 14:31:46
    bat文件后台运行 文章目录bat文件后台运行前言方法一方法二 前言 bat文件运行时会有一个黑黑的cmd.exe窗口,很吓人,就算用start/min命令去运行bat文件,电脑的任务栏下仍然会有相关的图标,怎么bat文件在后台...
  • 上一篇 linux(centOS)下搭建node服务器二、 使用koa2搭建项目 讲述了如何使用koa2搭建项目,本篇讲述使用pm2管理node应用程序和保持后台运行node应用 一、安装pm2 全局安装pm2: npm install -g pm2 安装完成...
  • 这样做控制台就保持等待输入的状态而不会一闪而过了。其实只要愿意,可以以此类推用system函数来做很多事,比如用 system("再生薰衣草.bmp"); 这句话来代替上面的那一句或写在其前面,则程序运行完成之后会...
  • 原标题:安卓手机锁屏后程序自动关闭,怎么设置手机...但很多人需要手机上某些app不间断的程序运行,如我们的IP这类的软件,我们需要一直运行,才能起到作用,但是每次手机一锁屏,app就自动退出了,所以很麻烦 ,...
  • 怎么 Android 程序一直后台运行

    千次阅读 2016-10-25 16:37:56
    Service设置成START_STICKY,kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样​通过 startForeground将进程设置为前台进程,做前台服务,优先级和前台应用一个级别​,除非在系统内存非常缺,否则此...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 794,574
精华内容 317,829
关键字:

如何让应用保持运行