android应用被系统回收
‘壹’ Android-Android中service与application的生命周期有关系吗
有关系的,在Android中进程按优先级可以分为五类,优先级从高到低排列:
1.前台进程 该进程包含正在与用户进行交互的界面组件,比如一个Activity。
2.可视进程 该进程中的组件虽然没有和用户交互,但是仍然可以被看到。
3.服务进程 该进程包含在执行后台操作的服务组件,比如播放音乐的Service。
4.后台进程 该进程包含的组件没有与用户交互,用户也看不到 Service。
5.空进程 没有任何界面组件、服务组件,或触发器组件。
Android系统是进程托管的,也就是说进程都是由系统来管理,系统会按照特定的算来来回收这些进程。在回收中秉承几个原则:
1. 尽量延长进程的生命周期,不到必须的情况下不会回收,因为系统回收进程会影响用户体验
2. 按优先级从低到高进行回收
3. 同等优先级的进程越近使用越晚回收。
通过上面这些解释,进程过一段时间后是会被回收的,但要遵循上面的这些原则,service和application的生命周期有关,只要进程被回收,那么它所占用的所有资源将被回收。
‘贰’ 不使用的Android软件需要退出吗
结论:全球84%的Android用户中,许多人可能并未充分利用系统的全部功能。本文将揭示一些关于Android使用的常见误区,并解读实用功能,帮助你更好地利用你的Android设备。误区:必须退出不使用的软件吗?
在Android初期,内存管理成为热议话题。由于早期设备内存有限,人们普遍认为关闭不必要的进程以提升性能。然而,Android的内存管理并非简单地强制关闭,而是采用挂起机制,保留进程在内存中,只在需要时才运行,以减少内存占用。
尽管如此,如果你的手机出现卡顿,内存不足,Android的Last Recently Used(最近使用过的程序)垃圾回收机制会自动结束最不常用的应用,以释放内存。但这并不是最佳解决方案,重启手机是解决内存问题的直接方法,尤其是当后台运行的低质量程序争夺内存时。
总结,尽管Android系统复杂,但理解其内存管理和优化策略可以帮助你更高效地使用设备。下次当你想要退出一个看似没在运行的程序时,不妨思考一下,它是否真的需要被关闭,或者是否可以通过清理后台程序来提升手机性能。
‘叁’ android进程被系统回收(杀死)
Activity绑定Service,那么这个service的生命周期跟activity相关。会随着activity结束而结束。
绑定的service跟activity是同一个进程的。
如果service配置一个单独的进程,应该是通过startService来启动的,bindService不行吧?
系统资源不足时,会有一个策略来回收进程,优先级的回收顺序是 Empty process、Background process、Service process、Visible process、Foreground process。
参见www.cnblogs.com/bastard/archive/2012/08/17/2644169.html
‘肆’ android app后台运行一段时间后,在回到前台,之前的一些对象会被回收
出现这种情况最主要的原因还是内存不足的问题,被系统自动回收了。如果LZ想保存现场的话,建议LZ使用onSaveInstanceState这个方法保存现场
‘伍’ 回收站里有个android能删吗
回收站里有个android能删。
回收站里有个android能删,但是会重新生成的,这个是系统的缓存文件,删了之后可能你存在手机上的一些东西就不见了,所以最好不要轻易删除。电脑上的你不认识的东西最好不要删除,清理电脑可以删除明确不要的东西,以防出现意外。
‘陆’ 如何防止android应用中的service被系统回收
永不被kill是不可能的,android系统应用都有可能会被kill,不要说用户应用了,只能说被kill以后还能重新启动。
Android中,当Service被kill后,如果重启需要使用BroadcastReceiver来实现,即广播接收者,例如利用BroadcastReceiver注册网络广播或者开关机广播,当接收到广播后直接启动service,这样就可以保证service被kill后,自动启动。
实现代码:
1.在配置文件AndroidManifest.xml中向系统注册BroadcastReceiver
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
2.需要添加相应权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
3.在Receiver中就可以添加开机,或者网络状态改变后需要进行的操作
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
4.执行操作,Intent intent = new Intent(context,Service.class); context.startService(intent); 这样即可开机,或者网络状态改变后启动Service了。