当前位置:首页 » 安卓系统 » Android杀死app

Android杀死app

发布时间: 2023-11-03 08:28:52

㈠ android app先后台再杀掉 和直接杀掉的区别

Android上杀掉进程的方式有两种,分别是System.exit(0)和Process.killProcess(Process.myPid()),那么这两种方式有何区别呢?相同点APP进程都会被直接杀掉我们通过adbshellps可以查看当前手机所有运行的进程状态,在执行完这两种方式之后,APP进程都会消失。生命周期都不会被调用onPause()、onStop()和onDestory(),也包括onSaveInstanceState,这些生命周期方法都不会被调用。不同点影响范围不同System.exit(0)只会影响当前的程序;Process.killProcess(Process.myPid())会杀掉所有PID一样的进程,比如那些拥有相同UID的应用,统统都会被杀掉。方式不一样System.exit(0)是停止程序的虚拟机;Process.killProcess(Process.myPid())是通过PID去杀死进程。补充System.exit(0)和System.exit(1)看官方的方法注释,如下:.110:代表成功的信号;1:代表失败的信号,常用于捕获到异常执行。使用方式从上面可以看出,这两种方式都比较暴力,不推荐使用,尤其是现在的手机配置都很好的情况下。而且进程都被杀掉了,相应的Service也会被干掉,如果存在推送的话,会出现各种莫名的问题。真要用的话,也得注意:如果程序有多个Activity,最好在主Activity中的OnBackPressed()中使用,如果在其它Activity中使用的话,APP会直接退出,退出后会重启应用,这样对于用户体验不是很好。

㈡ Android APP在后台被杀问题修复

目前项目采用单 Activity 模式,页面采用 Jetpack Navigation 导航
布局如下:Splash -> Home -> Detail

不做任何事情

持有 LiveData 类型变量 hasSDKInit,根据SDK初始化成功与否设置 true 或者 false

调用 SDK 实现相关功能。

很明显,被杀后与 Activity 生命周期关联的 ViewModel 也结束了,与新打开 APP 的区别是,这时候是没有通过 Splash 去 初始化 SDK 的, Home 直接调用一个没有初始化的SDK 实例当然就报错了。

这样我们把 SDK 的初始化挪到 Activity::onCreate 就行了。
Fragment 中通过``ViewModelProvider(requireActivity()).get(GlobalViewModel::class.java)`获取。

把 init SDK 放到 ViewModel 的构造函数中,并将 initSDK 方法私有化,不允许从外部调用

context 通过新建 ViewModelFactory 类传入。
Google 官方不推荐 ViewModel 持有任何形式的 Context,如果确实要用,可以考虑单例或者 AndroidViewModel

Splash 页面监听 hasSDKInit 逻辑不变。
Home 页面原有逻辑不变,必要时加上对 hasSDKInit 的监听,true 才可进行后续操作。
而,如果SDK 的 init 不依赖网络等其他因素,默认情况下因为所有调用都在主线程,那么 就不用做监听。

㈢ android 怎么关闭app

你可以进入应用管理然后选择正在运行就可以彻底关闭APP。也可以按住home键会弹出正在运行的程序,然后划掉它。

㈣ Android进程管理篇(二)-进程查杀方式总结

本篇文章简单总结一下Android系统查杀进程的方式。

注:AMS对应的应用层调用方法在ActivityManager中,通过如下方法获取ActivityManager来调用:

2.1 查杀方法:

调用AMS forceStopPackageLocked(final String packageName, int uid, String reason)

2.2 查杀条件:

除此之外,以下情况则必然会成为被杀进程:

进程的pkgList是在启动组件或者创建进程的过程向该队列添加的,代表的是该应用下有组件运行在该进程。那么pkgDeps是指该进程所依赖的包名,调用ClassLoader的过程添加。

2.3 查杀过程:

当app被force-stop后,90%保活策略都会失效:

参考:
http://gityuan.com/2016/10/22/force-stop/

系列文章:
Android进程管理篇(一)-应用进程启动过程
Android进程管理篇(二)-进程查杀方式总结
Android进程管理篇(三)-AMS进程调度
lowmemorykiller总结

㈤ 安卓如何删除app软件

长按你想要卸载的软件,找到并点击卸载(或者点击右上的一个小叉),即可卸载

㈥ Android应用 如何关闭另一个应用

1、am.killBackgroundProcesses(String packageName);
这个方法只能停止在后台的应用,如果应用在前台就不能用。

2、andorid.os.Process.killProcess(int pid);
这个方法对于前台应用同样没用,因为的我需求时杀死前台的app所以没有测试后台是否能够杀死,但是这个用来大范围的杀死后台进程是比较好用的:
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> infos = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo info:infos) {
if (info.processName.equals(MainActivity.packageName)){
android.os.Process.killProcess(info.pid);
}

热点内容
云盘视频解压密码 发布:2024-05-19 15:23:17 浏览:848
和平精英怎么改地区位置安卓 发布:2024-05-19 15:19:05 浏览:286
酒店的路由器如何配置 发布:2024-05-19 15:10:44 浏览:500
rpgmaker脚本 发布:2024-05-19 14:48:58 浏览:407
hds存储虚拟化 发布:2024-05-19 14:47:09 浏览:21
mysql数据库分片 发布:2024-05-19 14:42:30 浏览:342
2021款魏派vv6买哪个配置 发布:2024-05-19 14:31:11 浏览:633
前端如何打开第二个服务器地址 发布:2024-05-19 14:30:55 浏览:570
新建文件夹2百度盘 发布:2024-05-19 14:24:07 浏览:608
waslinux安装部署 发布:2024-05-19 14:23:11 浏览:787