缓存保活信息
① 如何清除高速缓存中的信息
IE 和 Navigator 都在硬盘中缓存你最近访问过的网页。当你再次访问这些网页时,高速缓存信息能够加快网页的访问速度,但这也向窥探者揭开了你的秘密。要清除高速缓存中的信息,在 Navigator 中可在 Edit 菜单中选择 Preferences,然后单击 Advanced 选项旁边的+号,再单击 Cache,最后单击 Clear Disk Cache 按钮;在Explorer中,应在View菜单中选择 Internet Options,然后进入 General 选项卡,单击 Delete Files 按钮。你还可以对浏览器进行设置,使它根本不使用高速缓存。当然,这会减慢网页访问速度。在 Navigator 中,依次选择 Edit、Preferences、Advanced,单击 Cache,并把 Disk Cache 选项框的值设置为0。在 IE 中,依次选择 View、General 和 Settings,然后把滑块移动到最左端。
② 怎样清理电脑缓存
问题一:windows7怎么清理电脑缓存 win7清理缓存方法如下:
一、清理磁盘缓存文件
1、点击“开始菜单”,选择“附件”,打开“系统工具”选项。
2、打开“磁盘清理程序”,然后选择需要清理的磁盘
3、接下来,主要选择一些程序的临时文件,以及软件推荐进行清理的项目即可,然后点击“确定”。
4、后程序自动开始进行磁盘清理的操作,只需要等待即可,一般来说,系统磁盘清理的过程比较缓慢,需要等待的时间比较长。
二:清理IE缓存文件
1、打开IE浏览器,选择“Internet 选项”
2、然后在IE选项中,会看到IE临时文件的选项,然后点击“删除”。
3、在删除选项中,一般来说,按照软件默认选择推荐清理的项目即可,然后点击“删除”,最后IE浏览器会提醒已经成功清理了IE缓存文件。
三:使用第三方程序软件 进行清理
1、使用360安全卫士软件,点击“电脑清理”选项。
2、然后可以点击“清理垃圾”,由于软件已经设置了推荐清理的选项,可以清楚的看到,关于系统以及浏览器和各种常用的应用软件的缓存文件的清理选项已经进入了清理列表,因此,点击“开始扫描”即可。
3、待软件扫描完成之后,点击“立即清理”,即可轻轻松松将所有的缓存文件进行一键清理即可
问题二:电脑在哪里清理缓存 1、先是清理IE上面的缓存!IE缓存清理方法。打开浏览器点击右上角的工具。然后点击删除的流量历史记录!然后我们把所有的勾打上。密码的还是可以留着的。点击确定即可删除IE的缓存。
2、当你QQ文件里面的缓存太大的时候,登录QQ不久就会提示删除缓存的信息。我们点击进入即可删除QQ文件夹里面的缓存。我们还可以设置自动删除QQ产生的缓存。
3、还可以使用清理磁盘的方法来实现。清理磁盘的时候电脑最好是不要登录其他什么软件。避免损坏磁盘!清理磁盘我们可以右键点击需要清理的磁盘。然后点击属性就能看到一个清理磁盘的按钮啦。
4、或者是点击开始按钮。然后点击运行。输入sageset。然后在选择要清理的磁盘,点击确定之后和上面的方法就差不多了。
5、如果觉得以上的方法都很麻烦。那我们可以下载一个电脑管家来使用。电脑管家里面都会有清理缓存的选项的。一般都在系统优化里面。点击就能一件清理啦。
问题三:请问怎样清理电脑缓存?我的电脑反应太慢了? 你好
以下是本人整理的电脑优化、电脑加速的方法,请参考。
1 定期的,用鲁大师等软件,测下电脑各项温度,如要温度过高会引起电脑运行缓慢,就有可能是内部风扇坏什么的,对电脑内的灰尘进行清理,台式机关机后打开机箱,用吹风机,冷风吹。
2 平时要常用 360 卫士 、金山卫士等工具清理系统垃圾和上网产生的临时文件(ie 缓存),查杀恶意软件。
3 电脑配置差,尽量把虚拟内存设置大点,(xp)右击我的电脑 属性 高级 性能…… 那里 设置 高级 更改
在自定义那里 设置为 2000 - 4000
(win7) 计算机-属性-高级系统设置-性能设置-“高级”选项卡-虚拟内存-更改-选择要设置的驱动器c盘,选择系统管理大小或者根据需要选择自定义大小-设置-确定。
4 杀毒软件装种占资源小的,如 nod32,或只装一个辅助杀毒软件。
5 尽量设置ip 为静态ip ,可以减少电脑开机启动时间和进入桌面后的反映时间。(cqjiangyong总结:很多人电脑开机后前几分钟动不了都是这个原因)
6 电脑桌面不要放太多文件和图标,会使电脑反应变慢的,软件尽量不要安装在c盘。
7 关闭一些启动程序。开始-运行-输入msconfig―确定-在“系统配置实用程序”窗口中点选“启动”-启动 ,除输入法(Ctfmon)、杀毒软件外,一般的程序都可以关掉。也可以用360等软件,智能优化开机加速。
8 建议只装一个主杀供软件,装多个会占电脑资源,会使电脑更慢。
9 定期的对整理磁盘碎片进行整理,打开我的电脑 要整理磁盘碎片的驱动器―属性―工具--选择整理的磁盘打开“磁盘碎片整理程序”窗口―分析―碎片整理―系统即开始整理。
10 安装个优化大师或超级兔子等 电脑优化软件,优化下,电脑也会快很多!!
11 现在的系统,占内存也比较大,有必要的话,加多条内存,也会快很多。
12 电脑硬盘用久了,也会使电脑变慢,重新分区安装可以修复逻辑坏,电脑也会快点,硬盘物理读写速度慢,也只能是换个好点的!!!
如果帮到你,请选为满意答案吧!!!
问题四:如何删除QQ在电脑上的缓存 删除QQ在电脑上的缓存方法:
1、登陆QQ。
2、点击QQ面板”设置“按钮。
3、点击左侧的”文件管理“。
4、在文件管理下,打开文件夹看看文件,Image里面是qq聊天过程中产生的一些图片,进入Image文件夹可以手动删除不需要的图片。
5、定期清理设置,可以提醒及时清理缓存。安装qq管家的话,可以直接点击”前去清理“即可,方便快捷。
问题五:不用软件怎么清理电脑缓存 可以进IE――属性――删除cookies.影响上网速度的还可以对IE缓存进可以控制,定期进行删除,可以对IE――属性――Internet临时文件――设置,把缓存容量控制在500到800M之间,这样就不会使C盘负载太多的垃圾文件。做完之后再对C盘清理下垃圾文件,具体方法进入我的电脑,C盘右击,属性下的清理,对弹出的全部选上,最后点清理。
问题六:如何删除电脑里面的缓存文件 右击我的电脑/属性/高级/性能中的设置/高级/虚拟内存中的更改注意:先选中驱动器[卷标]中的C:后点选“无分页文件”在按“设置”按钮,这时已经取消了C盘的虚拟内存。其他盘的缓存虚拟内存一样操作,重新启动电脑设置生效。如果你想使C盘空间变小点的话可以删除以下文件夹中的内容: c:\Documents and Settings\用户名\Cookies\下的所有文件(保留index文件)c:\Documents and Settings\用户名\Local Settings\Temp\下的所有文件(用户临时文件)c:\Documents and Settings\用户名\LocalSettings\Temporary Internet Files\下的所有文件(页面文件)c:\Documents and Settings\用户名\Local Settings\History\下的所有文件(历史纪录)c:\Documents and Settings\用户名\Recent\下的所有文件(最近浏览文件的快捷方式)c:\WINDOWS\Temp\下的所有文件(临时文件)c:\WINDOWS\ServicePackFiles(升级sp1或sp2后的备份文件)c:\WINDOWS\Driver Cache\i386下的压缩文件(驱动程序的备份文件)c:\WINDOWS\SoftwareDistribution\download下的所有文件如果对系统进行过windoes updade升级,则删除以下文件:c:\windows\下以 $NtU... 开头的隐藏文件。希望对您有用满意请采纳
问题七:如何清除电脑缓存里的东西? 如果你用的是IE浏览器(就是有个e图标的),就关闭浏览器。然后右键点击IE图标-属性,点击第二行中间的“删除文件”就可以清理临时的文件了。如果你用的是其他浏览器,通常会在浏览器窗口右上角的“工具”菜单“清理上网记录”(文字会有一点不同是正常的,不同的浏览器用不同的名字)就可以清理了,不过如果是Firefox不太推荐用这个。你也可以试试这个,把这行文字复制到记事本那里去。 @echo off ::增强版 color 2f Title echo. echo echo. echo *** 耗牛开始执行清理…… echo. echo 正在检查cookies、历史纪录等目录位置(当前用户)…… reg query HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders /v Cache>%temp%\cleantmp.txt reg query HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders /v Cookies>>%temp%\cleantmp.txt reg query HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders /v History>>%temp%\cleantmp.txt reg query HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders /v NetHood>>%temp%\cleantmp.txt reg query HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders /v Recent>>%temp%\cleantmp.txt echo 正在清理Cookies、IE缓存、历史纪录等(当前用户)…… for /f tokens=3* %%a in (%temp%\cleantmp.txt) do ( for /d %%i in (%%a %%b\*.*) do rd /s /q %%i del /a /f /s /q %%a %%b\*.* ) echo 正在清理临时文件 (系统目录)…… del /a /f /s /q %userprofile%\Locals~1\Tempor~1\*.* del /a /f /s /q &qu......>>
问题八:电脑缓冲区怎么清理? 你说的缓冲区指的应该是IE的缓冲区吧,IE的缓冲区清理是:
打开IE→菜单的“工具(T)”→选“Internet选项”→点击浏览记录中的按钮“删除(D)”
问题九:电脑运行里面的缓存怎么清除? 清理电脑缓存,有很多方法,可以通过以下方式,进行清理:
1、开始――程序――附件――系统工具――磁盘碎片整理程序――碎片整理――C盘的可用空间达到75%以上最佳――每个磁盘都必须进行碎片整理――直到没有红色出现。
2、双击打开“我的电脑”――右键C盘――属性――磁盘清理――选项全部勾选――确定。再如此清理D、E、F、G盘。
3、打开360安全卫士――电脑清理――清理垃圾――设置(全部勾选)――全选――开始扫描――立即清理。然后把其它的“一键清理”“清理插件”“清理痕迹”“清理注册表”依次做完。 再点击“优化加速”――启动项――除了“输入法切换工具ctfmon”偿“360安全卫士”外,其它全部禁止开机启动。
问题十:如何清理电脑应用软件缓存 打开计算机c盘
右键-磁盘清理-会删除浏览器浏览记录和系统缓存
那样 电脑会运行的快一点
③ 谁能告诉我缓存是什么怎么设置缓存!谢谢
CPU的缓存是这样定义的:
缓存(Cache)
CPU进行处理的数据信息多是从内存中调取的,但CPU的运算速度要比内存快得多,为此在此传输过程中放置一存储器,存储CPU经常使用的数据和指令。这样可以提高数据传输速度。可分一级缓存和二级缓存。
一级缓存
即L1
Cache。集成在CPU内部中,用于CPU在处理数据过程中数据的暂时保存。由于缓存指令和数据与CPU同频工作,L1级高速缓存缓存的容量越大,存储信息越多,可减少CPU与内存之间的数据交换次数,提高CPU的运算效率。但因高速缓冲存储器均由静态RAM组成,结构较复杂,在有限的CPU芯片面积上,L1级高速缓存的容量不可能做得太大。
二级缓存
即L2
Cache。由于L1级高速缓存容量的限制,为了再次提高CPU的运算速度,在CPU外部放置一高速存储器,即二级缓存。工作主频比较灵活,可与CPU同频,也可不同。CPU在读取数据时,先在L1中寻找,再从L2寻找,然后是内存,在后是外存储器。所以L2对系统的影响也不容忽视。
缓存目前是封装在CPU芯片中的,一般没有办法设置。
④ Android 如何进行进程保活
每一个 Android 应用启动后至少对应一个进程,有的是多个进程,而且主流应用中多个
进程的应用比例较大
对于任何一个进程,我们都可以通过 adb shell ps|grep <package_name>的方式来查看
它的基本信息
Android 中的进程跟封建社会一样,分了三流九等,Android 系统把进程的划为了如下
几种(重要性从高到低),网上多位大神都详细总结过(备注:严格来说是划分了 6 种)。
场景:
1.某个进程持有一个正在与用户交互的 Activity 并且该 Activity 正处于 resume 的
状态。
2.某个进程持有一个 Service,并且该 Service 与用户正在交互的 Activity 绑定。
3.某个进程持有一个 Service,并且该 Service 调用 startForeground()方法使之位于前台运行。
4.某个进程持有一个 Service,并且该 Service 正在执行它的某个生命周期回调方法,比如 onCreate()、 onStart()或 onDestroy()。
5.某个进程持有一个 BroadcastReceiver,并且该 BroadcastReceiver 正在执行其onReceive()方法。用户正在使用的程序,一般系统是不会杀死前台进程的,除非用户强制停止应用或者系统内存不足等极端情况会杀死。
场景:
1.拥有不在前台、但仍对用户可见的 Activity(已调用 onPause())。
2.拥有绑定到可见(或前台)Activity 的 Service
用户正在使用,看得到,但是摸不着,没有覆盖到整个屏幕,只有屏幕的一部分可见进程
不包含任何前台组件,一般系统也是不会杀死可见进程的,除非要在资源吃紧的情况下,
要保持某个或多个前台进程存活
场景
1.某个进程中运行着一个 Service 且该 Service 是通过 startService()启动的,与用户看见的界面没有直接关联。
在内存不足以维持所有前台进程和可见进程同时运行的情况下,服务进程会被杀死
场景:
在用户按了"back"或者"home"后,程序本身看不到了,但是其实还在运行的程序,
比如 Activity 调用了 onPause 方法系统可能随时终止它们,回收内存
场景:
某个进程不包含任何活跃的组件时该进程就会被置为空进程,完全没用,杀了它只有好处没坏处,第一个干它!
上面是进程的分类,进程是怎么被杀的呢?系统出于体验和性能上的考虑,app 在退到
后台时系统并不会真正的 kill 掉这个进程,而是将其缓存起来。打开的应用越多,后台缓存的进程也越多。在系统内存不足的情况下,系统开始依据自身的一套进程回收机制
来判断要 kill 掉哪些进程,以腾出内存来供给需要的 app, 这套杀进程回收内存的机制
就叫 Low Memory Killer。那这个不足怎么来规定呢,那就是内存阈值,我们可以使用
cat /sys/mole/lowmemorykiller/parameters/minfree 来查看某个手机的内存阈值。
其实系统在进程回收跟内存回收类似也是有一套严格的策略,可以
自己去了解,大概是这个样子的,oom_adj 越大,占用物理内存越多会被最先 kill 掉,OK,那么现在对于进程如何保活这个问题就转化成,如何降低 oom_adj 的值,以及如
何使得我们应用占的内存最少。
据说这个是手 Q 的进程保活方案,基本思想,系统一般是不会杀死前台进程的。所以要
使得进程常驻,我们只需要在锁屏的时候在本进程开启一个 Activity,为了欺骗用户,
让这个 Activity 的大小是 1 像素,并且透明无切换动画,在开屏幕的时候,把这个 Activity
关闭掉,所以这个就需要监听系统锁屏广播,我试过了,的确好使,如下。
如果直接启动一个 Activity,当我们按下 back 键返回桌面的时候,oom_adj 的值是 8,
上面已经提到过,这个进程在资源不够的情况下是容易被回收的。现在造一个一个像素
的 Activity。
为了做的更隐藏,最好设置一下这个 Activity 的主题,当然也无所谓了
在屏幕关闭的时候把 LiveActivity 启动起来,在开屏的时候把 LiveActivity 关闭掉,所以
要监听系统锁屏广播,以接口的形式通知 MainActivity 启动或者关闭 LiveActivity。
现在 MainActivity 改成如下
按下 back 之后,进行锁屏,现在测试一下 oom_adj 的值
果然将进程的优先级提高了。
但是还有一个问题,内存也是一个考虑的因素,内存越多会被最先 kill 掉,所以把上面
的业务逻辑放到 Service 中,而 Service 是在另外一个 进程中,在 MainActivity 开启这
个服务就行了,这样这个进程就更加的轻量,
OK,通过上面的操作,我们的应用就始终和前台进程是一样的优先级了,为了省电,
系统检测到锁屏事件后一段时间内会杀死后台进程,如果采取这种方案,就可以避免了
这个问题。但是还是有被杀掉的可能,所以我们还需要做双进程守护,关于双进程守护,
比较适合的就是 aidl 的那种方式,但是这个不是完全的靠谱,原理是 A 进程死的时候,
B 还在活着,B 可以将 A 进程拉起来,反之,B 进程死的时候,A 还活着,A 可以将 B
拉起来。所以双进程守护的前提是,系统杀进程只能一个个的去杀,如果一次性杀两个,
这种方法也是不 OK 的。
事实上
那么我们先来看看 Android5.0 以下的源码,ActivityManagerService 是如何关闭在应用
退出后清理内存的
在应用退出后,ActivityManagerService 不仅把主进程给杀死,另外把主进程所属的进
程组一并杀死,这样一来,由于子进程和主进程在同一进程组,子进程在做的事情,也
就停止了。所以在 Android5.0 以后的手机应用在进程被杀死后,要采用其他方案。
这种大部分人都了解,据说这个微信也用过的进程保活方案,移步微信 Android 客户端
后台保活经验分享,这方案实际利用了 Android 前台 service 的漏洞。
原理如下
对于 API level < 18 :调用 startForeground(ID, new Notification()),发送空的
Notification ,图标则不会显示。
对于 API level >= 18:在需要提优先级的 service A 启动一个 InnerService,两个服务
同时 startForeground,且绑定同样的 ID。Stop 掉 InnerService ,这样通知栏图标即
被移除。
public class KeepLiveService extends Service{
public static final int NOTIFICATION_ID=0x11;
public KeepLiveService() {
}
@Override
public IBinder onBind(Intent intent){
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onCreate() {
super.onCreate(); //API 18 以下,直 接发 送 Notification 并 将 其 置 为 前 台
if(Build.VERSION.SDK_INT<Build.VERSION_CODES.JELLY_BEAN_MR2){
startForeground(NOTIFICATION_ID,new Notification());
} else { //API 18 以上,发送 Notification 并将其置为前台后,启动 InnerService
Notification.Builder builder=new Notification.Builder(this);
builder.setSmallIcon(R.mipmap.ic_launcher);
startForeground(NOTIFICATION_ID, builder.build());
startService(new Intent(this, InnerService.class));
}
}
public class InnerService extends Service{
@Override public IBinder onBind(Intent intent) {
return null;
}
@Override public void onCreate() {
super.onCreate(); //发送与 KeepLiveService中 ID 相同的 Notification,然后将其取消并取消自己的前台显示
Notification.Builder builder = new Notification.Builder(this);
builder.setSmallIcon(R.mipmap.ic_launcher);startForeground(NOTIFICATION_ID,
builder.build());
new Handler().postDelayed(new Runnable() {
@Override public void run() {
stopForeground(true);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.cancel(NOTIFICATION_ID);
stopSelf();
}
},
100);
}
}
}
在没有采取前台服务之前,启动应用,oom_adj 值是 0,按下返回键之后,变成 9(不
同 ROM 可能不一样)
相互唤醒的意思就是,假如你手机里装了支付宝、淘宝、天猫、UC 等阿里系的 app,
那么你打开任意一个阿里系的 app 后,有可能就顺便把其他阿里系的 app 给唤醒了。
这个完全有可能的。此外,开机,网络切换、拍照、拍视频时候,利用系统产生的广播
也能唤醒 app,不过 Android N 已经将这三种广播取消了。
如果应用想保活,要是 QQ,微信愿意救你也行,有多少手机上没有 QQ,微信呢?或
者像友盟,信鸽这种推送 SDK,也存在唤醒 app 的功能。
拉活方法
JobSheler是作为进程死后复活的一种手段,
native进程方式最大缺点是费电,Native
进程费电的原因是感知主进程是否存活有两种实现方式,在 Native 进程中通过死循环
或定时器,轮训判断主进程是否存活,当主进程不存活时进行拉活。其次 5.0 以上系统
不支持。 但是 JobSheler 可以替代在 Android5.0 以上 native 进程方式,这种方式即
使用户强制关闭,也能被拉起来,亲测可行。
JobSheler@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public class MyJobService extends JobService {
@Override
public void onCreate() {
super.onCreate();
startJobSheler();
}
public void startJobSheler() {
try {
JobInfo.Builder builder = new JobInfo.Builder(1,new ComponentName(getPackageName(), MyJobService.class.getName()));
builder.setPeriodic(5); builder.setPersisted(true); JobScheler jobScheler =(JobScheler)
this.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheler.schele(builder.build());
}
catch
(Exception ex)
{ ex.printStackTrace(); } }
@Override
public boolean onStartJob(JobParameters jobParameters) {
return false;
} @Override public boolean onStopJob(JobParameters jobParameters) {
return false;
}
}
这个是系统自带的,onStartCommand 方法必须具有一个整形的返回值,这个整形的返
回值用来告诉系统在服务启动完毕后,如果被 Kill,系统将如何操作,这种方案虽然可
以,但是在某些情况 or 某些定制 ROM 上可能失效,我认为可以多做一种保保守方案。
1.START_STICKY
如果系统在 onStartCommand 返回后被销毁,系统将会重新创建服务并依次调用
onCreate 和 onStartCommand(注意:根据测试 Android2.3.3 以下版本只会调用
onCreate 根本不会调用 onStartCommand,Android4.0 可以办到),这种相当于服务
又重新启动恢复到之前的状态了)。
2.START_NOT_STICKY
如果系统在 onStartCommand 返回后被销毁,如果返回该值,则在执行完
onStartCommand 方法后如果 Service 被杀掉系统将不会重启该服务
3.START_REDELIVER_INTENT
START_STICKY 的兼容版本,不同的是其不保证服务被杀后一定能重启。
4.相比与粘性服务与系统服务捆绑更厉害一点,这个来自爱哥的研究,这里说的系统服务
很好理解,比如 NotificationListenerService,NotificationListenerService 就是一个监听
通知的服务,只要手机收到了通知,NotificationListenerService 都能监听到,即时用户
把进程杀死,也能重启,所以说要是把这个服务放到我们的进程之中,那么就可以呵呵
了
所以你的应用要是有消息推送的话,那么可以用这种方式去欺骗用户。
⑤ Android保活方案
系统出于性能和体验上的考虑,APP退到后台后并不会真正的kill、掉进程,而是将其缓存起来。
打开的应用越多,缓存的应用也就越多,在系统进程不足的情况下,系统根据自己的一套进程回收机制,来判断kill掉哪些进程,以腾出进程给需要的app,这套进程回收机制叫做low memory killer。
内存阀值,每个手机都不一样,当可用内存小于该值得时候,Android就会杀死对应优先级得进程。
进程的优先级通过oom_adj来判断,oom_adj取值如下:
0-3是比较安全的oom_adj一般不会被系统杀死的,所以我们只要保证自己的app oom_adj在0-3之间就可以了。
可以通过adb命令:cat /proc /4181/oom_adj来查看自己app的oom_adj的值
4181是进程号
原理:手机关闭屏幕的时候,偷偷创建一个activity,让应用成为前台进程,打开屏幕时关闭activity,这样用户就不会发现什么异常,我们知道前台应用的oom_adj为0是不会被杀死的,这样就达到看保活的目的。
缺点:activity不够干净,只有在息屏的时候才生效,存在局限性比较大,而且谷歌原生的系统息屏的时候不会清理进程,但是现在很多厂商会在息屏的时候清理内存,所以本方案的可行性不高,可以作为了解。
保活原理:启动一个前台服务,从而拉高整个应用的优先级。
因为一旦通知被用户干掉那么该保活方案就不好用了,所以通知图标存在与否是该方案是否可行的关键。
但是该方案是谷歌官方承认的保活方案,所以可行性还是很高的。
需要适配
API<18通知图标不会显示
API>=18&&API<26可以启动双服务,绑定同样的D,然后stop
这个方法的原理是8.0系统之前会根据服务的id来判断通知,那么第二个id设置跟第一个相同,然后自杀,系统就会误认为此通知已死就不会通知了,那么通知栏上面就不会显示
API>=26后暂时没有方式能够隐藏
8.0之后不可以创建同样的id的通知,所以此隐藏通知的方法就不好用了,当然了,通知显示与否不是该方案成功的评判标准,所以说还是可以用的。
在发生特定系统事件时,系统会发出广播,通过在 Androidmanifest中静
态注册对应的广播监听器,即可在发生响应事件时拉活
但是从 android7.0开始,对广播进行了限制,而且在8.0更加严格该方法就不适用了。
有多个app在用户设备上安装,只要开启其中一个就可以将其他的app也拉
活。比如手机里装了手Q、QQ空间、兴趣部落等等,那么打开任意一个app后,其
他的app也都会被唤醒
系统每隔一段时间会进行账户同步,当系统去账户同步的时候(不一定多长时间,跟系统有关),我们就去拉活app,这个方案是非常稳定的,当然了国内的系统都是定制的,所以还是需要一定的适配的。
优点:系统唤醒,比较稳定
缺点:时间不能把控
JobScheler允许在特定状态与特定时间间隔周期执行任务。可以利
用它的这个特点完成保活的功能,效果即开启一个定时器,与普通定时器不
同的是其调度由系统完成。
同样在某些ROM可能并不能达到需要的效果
⑥ 进程保活
一 、问:什么是进程保活?
答:进程保活就是进程永远存在内存中,是杀不死的,就算杀死了也会有办法重新启动起来,其实这些并不是流氓手段,很多情况下,如果你想给你的用户提供服务,就必须有一个进程常驻着,便于在特定的时候做一些特定的事情,比如广播接受者,他就不支持静态注册,也就是说如果我们想接受屏幕开关启动的广播,必须要在进程中动态注册,这个时候如果没有一个常驻的进程,锁屏业务就无法正常的为用户展开服务。
二、问:进程是怎么死掉的呢?
答:其实进程被杀死的原因,一方面是人为的,二、可能被第三方应用杀死,如杀敌软件等。
三、问:Android进程的优先级?
答:
1、前台进程 (Foreground process):用户当前操作所在的进程,当内存不足以承担前台进程的使用,才有可能回收
2、可见进程(Visible process):没有任何前台组件,但是仍然会影响屏幕上所见内容,他是一种极为重要的进程,除非为了维持前台进程,因内存不足,有可能会回收掉可见进程,否则系统是不会回收可见进程。
3、服务进程(Service process):他与用户所见的内容是没有直接关联,但是他们通常执行一些用户关心的操作,比如说在后台获取网络数据,后台播放音乐,后台进行一些数据计算等。被杀死的原因:也是为了
支持前台进程和可见进程,因内存不足情况下才会被回收。
4、后台进程(BaclGround process):对用户的体验没有直接的影响,用户可以随时终止他们,这个进程是为了供给上面三个进程来使用的,通常在后台进程运行着很多操作,他们保存在一个列表当中,为了确保用户最近查看Activit的进程最后一个被终止,他是一个LRU算法,
5、空进程(Empty process) :保存这个进程的唯一目的就是用来做缓存,以缩短下次在运行组件所需的启动时间,为了使系统总体的资源在进程缓存和内存底层之间保持平衡。它是不包括任何组件的进程.
四、问:Android进程的回收策略?
答:Android进程的回收策略主要是通过Low memory killer机制来完成的。
Low memory killer:通过一些比较复杂的评分机制,对进程进行打分,然后讲分数的进程判定为bad进程,杀死并释放内存。Low memory killer是定时进行检查的,它主要是通过进程的OOM_ODJ来判断进程的优先级。当OOM_ODJ的值越小,进程的优先级越高,而OOM_ODJ越不会去回收。反之就会被回收。
注意:Low memory killer和out memory不一样的地方:out memory机制只有当系统内存不足的时候才会启动检查,而Low memory killer是定时进行检查的,它主要是通过进程的OOM_ODJ来判断进程的优先级。
五、问:进程保活方案?
答:Android进程的回收策略主要是通过Low memory killer机制来完成的。
1、利用系统广播拉活,在发生系统事件的时候,系统会发出相应的广播,
详情查看:http://blog.csdn.NET/sunshinetan/article/details/53126857
2、利用系统Service机制拉活,在Service有一个onStartCommand
推荐博客:http://blog.csdn.net/wulianghuan/article/details/8596467
Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStartCommand方法中做一些处理。然后我们注意到这个函数有一个int的返回值,这篇文章就是简单地讲讲int返回值的作用。从Android官方文档中,我们知道onStartCommand有4种返回值:
START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand
(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。(service因内存不足的情况下,杀死的进程才可以拉活,这里要特别注意,不是所有情况都可以拉活。第一次server被杀死后,会在5秒后拉活,第二次会在10秒后,第三次会在20秒后。之后就不会在拉活。第二种情况是获得root权限通过stop停止的,也是无法通过server拉活)
START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统将会把它置为started状态,系统不会自动重启该服务,直到startService(Intent intent)方法再次被用;。
START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。
START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启。
3、利用Native进程拉活,
4、利用JobScheler机制拉活:Android5.0之后提供的一个机制,他会监听主进程的存活,如果死掉就会激活拉活进程。
5、利用账号同步机制拉活:android系统有一个账户系统,设置一个自己的账户,android会定期唤醒账户更新服务。我们可以自己设定同步的事件间隔,且发起更新的是系统,不会受到任何限制。需要在 AndroidManifest 中定义账号授权与同步服务。
Android 版本(Android N)中系统对账户同步这里做了变动,该方法不再有效。
缺点:
a.用户会在系统设置的账户列表里面看到一个不认识的账户;
b.同步的事件间隔是有限制的,最短1分钟,见源码,如果小雨60秒,置为60秒;
c.用户可以卸载账户;
d.必须联网!google提供这个组件是让你同步账户信息,不联网就不能保活!
⑦ 关机后电脑缓存中数据信息还存在吗
正常关机后(涵盖正常关闭所有软件后再关机),缓存数据不存在
非正常关机(停电等)某些程序的缓存数据还在,例如你编辑的word文档,你再次打开时会提示你是恢复到上次打开的数据还是新数据。
原则上,非正常关机后缓存数据丢失。
⑧ 计算机缓存会向主存传递信息吗
计算机缓存会向主存传递信息。
缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速率就慢下来了,不过CPU会把这些数据复制到缓存中去,以便下一次不要再到内存中去取。
