‘壹’ 安卓手机后台程序无法关闭怎么办
其实android系统设计的理念就是要淡化用户对后台的管理,手机资源的分配完全交给系统就可以。Android会设定一个阈值,这个阈值默认设置的非常小,所以我们所看到内存剩余量也会很少,事实上并不会影响手机的速度。下面是我收集整理的安卓手机后台程序无法关闭怎么办,欢迎阅读。
安卓手机后台程序无法关闭怎么办
关于Android的后台一直关不掉的问题,其实完全是因为Android的广播机制。简单来说,当用户安装某一个程序的时候,系统会像面试官一样把这个程序的功能记录下来,当用户在使用手机时,系统状态的变化会产生各种事件,这些事件需要一些程序来处理的时候,系统会发送广播消息,而这些能处理这件事的程序会被启用,究竟是用哪一个程序,这个是由系统默认的程序或者由用户选择的程序来处理这个事件。
举个例子:就如同你开了一家公司,Android是你的管家,那些程序则是来你这里应聘的职工,管家会记录这些职工的能力,例如A会搓澡,B会大保健。当你想要搓澡的时候,管家会叫A过来帮你搓澡。当你想要大保健的时候,管家会叫B过来给你做个大保健。哪怕这个程序是在休眠中,也会被叫起来。也就是不管你怎么去关闭这些应用程序,当需要它的时候,它就是一颗螺丝钉,哪里需要哪里钉。
当然还有一些你不需要的程序也一直在自启动,这是因为利益的原因,国内的很多流氓软件都改变了自身程序的优先性,外加增加了终止其他程序的权限,还有增加守护进程的功能,当检测到自己人被干掉了,直接一个复活术让这个程序满血满蓝原地复活。而另外一些社交软件则是为了保证能够及时推送消息,也会做出一些优先权的改变。
如果运行内存大,是不是就不需要关闭了?
其实Android系统设计的.理念就是要淡化用户对后台的管理,手机资源的分配完全交给系统就可以。Android会设定一个阈值,这个阈值默认设置的非常小,所以我们所看到内存剩余量也会很少,事实上并不会影响手机的速度,而且它有一个自己的规则来回收这些内存,当内存使用达到临界值的时候,再次打开另一个程序系统会选择一些重要性比较低的程序关闭来腾出内存给这个程序运行。
而我们之所以感觉手机在打开某个大型程序会慢的原因就是当你打开这个程序的时候,这个程序会向系统申请内存,由于系统不会关闭所有的进程,只是选择性的去关闭,所以会调动大量的系统资源进行操作,自然也就会拖慢系统。改变系统的阈值会改善很多,但是也可能会带来一些问题。
所以,后台的程序本身就不需要关闭,如果当你运行某个大型程序的时候可以去手动关闭,这样可以显着的提高速度,而平常使用的时候则不需要去管它。至于内存的大小,这个除非你内存大到一定程度,否则你安装N多APP早晚又会达到这个阈值的。
关闭手机后台运行程序
方法一、在应用上退出程序
现在很多软件游戏在退出后是不会在后台继续运行的,像这类应用我们只需在应用界面点击手机“返回键”两次即可退出,或者在应用设置处点击退出即可。
方法二、在手机设置里关闭程序
如果手机应用在前台关闭后仍然会运行,您也可以在手机设置里对程序进行关闭。
1、在手机“设置”里找到“应用程序”,在应用列表里找到该应用,如下图所示。
2、点击应用图标打开设置页面后点击“强行停止”即可。
方法三、用第三方软件关闭程序
现在很多手机管理软件都有关闭程序的功能,像360手机卫士、腾讯手机管家、高级任务管理器之类的软件都可以实现。这里就以360手机卫士为例为大家讲解一下。
1、打开360手机卫士,在“手机加速”里找到“内存清理”并点开,如下图所示。
2、在“内存清理”页面选择需要清理的应用进程,有些如网络输入法这类常用的软件可以不用清理,然后选择“一键清理”即可,如下图所示。
3、此外360手机卫士安装后在手机屏幕上会有个如下图显示所占内存百分比的小图标,点击打开小窗口,点击某个会关闭该应用,也可以点击“一键清理”关闭所有前台应用。
手机中有些小软件占用的内存是很小的,对于这些软件如果用户常用的话是不需要去关闭其后台程序的,这样能加快您下次启动该软件的时间,增加用户体验。而对于占内存比较大的软件游戏,我们可以手动对其进行关闭,保障系统运行的流程,也能节省手机电量。
强制结束关闭后台
首先是打开"设置",然后找到"应用程序"点击进入,找到"管理应用程序"后点击,进入"正在服务的程序"选项,找到想结束的程序进入后点击"强制结束"即可。
‘贰’ 怎么把pc端的软件作为服务器与android客户端通信
Android使用的仅仅使用了PC 里边的一个端口 IP自然就是127.0.0.1了,或者是localhost吧 关于5037口和5555口,找到了一个看起来合理的解释: adb(Android Debug Bridge)包括三个部分: 1)adb client, 运行在PC上(为DDMS,即IDE工作) 2)adb daemon(守护进程), 运行于Emulator(为与Emulator中的VM交互工作); 3)adb server(服务进程), 运行在PC(任务管理器上有),管理着adb client和adb daemon的通信.server与client通信的端口是是5037, adb server会与emulator交互的,使用的端口有两个,一个是5554专门用于与Emulator实例的连接,那么数据可以从Emulator转发给IDE控制台了,另一个则是5555,专门与adb daemon连接为后面调试使用。
‘叁’ Android5.0之后怎么实现守护进程
1.提高优先级
这个办法对普通应用而言,应该只是降低了应用被杀死的概率,但是如果真的被系统回收了,还是无法让应用自动重新启动!
2.让service.onStartCommand返回START_STICKY
通过实验发现,如果在adb shell当中kill掉进程模拟应用被意外杀死的情况(或者用360手机卫士进行清理操作),如果服务的onStartCommand返回START_STICKY,在eclipse的进程管理器中会发现过一小会后被杀死的进程的确又会出现在任务管理器中,貌似这是一个可行的办法。但是如果在系统设置的App管理中选择强行关闭应用,这时候会发现即使onStartCommand返回了START_STICKY,应用还是没能重新启动起来!
3.android:persistent="true"
网上还提出了设置这个属性的办法,通过实验发现即使设置了这个属性,应用程序被kill之后还是不能重新启动起来的!
4.让应用成为系统应用
实验发现即使成为系统应用,被杀死之后也不能自动重新启动。但是如果对一个系统应用设置了persistent="true",情况就不一样了。实验表明对一个设置了persistent属性的系统应用,即使kill掉会立刻重启。一个设置了persistent="true"的系统应用,在android中具有core service优先级,这种优先级的应用对系统的low memory killer是免疫的!
‘肆’ adb环境下的root权限获取
这个是和设备的系统有关系的,一般的debug 版本的系统可以开root,正式出厂的都没有的
adb的root权限是在system/core/adb/adb.c中控制.主要根据ro.secure以及ro.debuggable等systemproperty来控制.默认即档ro.secure为0... 博文 来自: sir_...查看全部2021年1月3日-csdn已为您找到关于adb获得root权限相关内容,包含adb获得root权限相关文档代码介绍、相关教程视频课程,以及相关adb获得root权限问答内容。为您解决当...
2021年7月1日-adb获取root权限----adb命令集合:一、获取root权限,给文件以读写权限 步骤:1、手机进行root; 2、cmd 进入命令行 运行adbshell命令(adb已配置到环境变...
2016年8月10日-当你获取root权限后通过adb访问 /data/data目录: 1、进入shell模式adbshell 2、su 切换到root用户 su 3、修改/data/data目录的权限为 777即可 chmod 777 /...
2013年8月15日-adb里面有个root命令,可以用来获取root权限。Android守护进程adbd启动时,会调用create_local_service_socket()创建socket套接字, fd = service_to_fd(...
‘伍’ Android 7.0 和8.0 如何保活
1.控制onStartCommand函数的返回值。
我对这个函数的理解是:当服务被异常终止时,是否重启服务?
有些文章里面在用这个做保活时,修改的是flag,在我实际测试中是无效。有效的做法是直接返回参数。另外默认的flags值为0,是START_STICKY_COMPATIBILITY。如下:
[java]view plain
@Override
publicintonStartCommand(Intentintent,intflags,intstartId){
//TODOAuto-generatedmethodstub
returnSTART_STICKY;
//returnsuper.onStartCommand(intent,flags,startId);
}
测试结果:
魅族的机子:无效,不管默认还是修改参数,在DDMS里面直接结束进程后都不会重启服务。
其它三台机子(9100没测):默认参数的情况下就会重启服务,return START_STICKY 会重启,return START_NOT_STICKY 不会重启。
其它:1.用360一键清理,或者360超级ROOT的手机优化,会杀死进程,过会儿还是会重启,只是会慢很多,大概是在排队重启服务。
2.一次测试完后确保服务重启后,执行了onStartCommand函数。
2.在service 的onDestory里面重启服务
这个在所有能触发onDestory的情况下都是有效的。4台测试机都测试过。直接startService 或者发送广播重启都可以 。
但能触发onDestory的情况,我不知道内存回收会不会触发。另外两种情况(2,3)是不触发的。我的测试方法是在“设置”-》应用管理-》正在运行-》停止服务。(这个是正常停止服务,会触发onDestory,所以上面的onStartCommand效果不会触发。)
3.提高服务的优先级
这个主要是针对第一种kill服务的情况,内存回收机制。由于这个测试比较难搭建。360清理什么把后台的进程都杀的,体现不出优先级这样的概念。我的建议是能提高就提高。下面例几种。
通知--前台service
创建一个通知使自己成为前台service
测试结果:
360一键清理和手机优化,不会把该service结束掉。
对于后台保护:华为G730不结束service,魅族和华为TL00H都会结束service。
通知栏的保活效果还是可以的,一般的应用要求基本能满足了。
若有root权限:
android:persistent="true",并放入system/app中
测试结果:效果一般,三星9100上用360等清理工具杀不掉进程,在华为G730上没什么效果.(这个测试跟onStartCommand有点干扰)
4.守护进程
双服务
360会同时杀掉两个服务,分两个apk也一样。
native守护进程
360不会杀掉native的守护进程,但在魅族和华为TL00H中待机一段时间后还是会被杀掉。
结论和待续
1.一般的应用添加到后台保护进程后,改个onStartCommand返回值,再加个通知。基本上大部分都能保活了。
2.双服务我觉得没有native守护进程来的好,虽然360,微信什么的都有几个进程服务,但如果不添加到后台保活的话,效果一样不能保活,也会进入停止状态。
3.但是.360手机助手会创建双natice守护进程做相互的看守。存活的效果会高一点点。“没添加到后台保活”一般只会杀一次,(魅族是屏幕关闭后5分钟,华为TL00H是屏幕关闭时)