當前位置:首頁 » 安卓系統 » 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-11-30 06:46:16 瀏覽:848
java計劃 發布:2024-11-30 06:44:04 瀏覽:942
linux查看ftp日誌 發布:2024-11-30 06:33:19 瀏覽:475
設置截屏存儲 發布:2024-11-30 06:29:00 瀏覽:394
jpg演算法 發布:2024-11-30 06:28:55 瀏覽:195
怎麼刪除u盤中的文件夾 發布:2024-11-30 06:28:20 瀏覽:216
iphone文件夾打開 發布:2024-11-30 06:13:43 瀏覽:298
如何配置Javaweb環境 發布:2024-11-30 06:09:24 瀏覽:121
怎麼使用Androidapi 發布:2024-11-30 06:08:43 瀏覽:61
包鋼伺服器地址 發布:2024-11-30 06:06:27 瀏覽:563