部分APP在任务列表中被杀死,但是开机后会自动重启,以下解决该问题
- 不允许自动重启列表配置:
在frameworks/base下修改
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 0e2df09fe02c..be036ed03016 100755
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -4367,4 +4367,10 @@
<bool name="config_pdp_reject_enable_retry">false</bool>
<!-- pdp data reject retry delay in ms -->
<integer name="config_pdp_reject_retry_delay_ms">-1</integer>
+
+ <!-- modified by weitf (20220817) (Disallow Auto Start) start <<< -->
+ <string-array translatable="false" name="disallow_auto_start_list" >
+ <item>"bubei.tingshu"</item>
+ </string-array>
+ <!-- modified end <<< -->
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 9564542d4717..d35f49663f74 100755
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -4057,4 +4057,9 @@
<java-symbol type="string" name="permgrouplab_phone" />
<java-symbol type="string" name="permgrouplab_sms" />
<!-- added end -->
+
+ <!-- modified by weitf (20220817) (Disallow Auto Start) start <<< -->
+ <java-symbol type="array" name="disallow_auto_start_list" />
+ <!-- modified end <<< -->
+
</resources>
- 实现不自动重启功能:
在frameworks/base下修改
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
old mode 100644
new mode 100755
index 2c123e06431a..cc704530973e
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -620,6 +620,11 @@ public class ActivityManagerService extends IActivityManager.Stub
// we still create this new offload queue, but never ever put anything on it.
boolean mEnableOffloadQueue;
+ // modified by elink_weitf (20220817) (Disallow Auto Start) start <<<
+ private String mCachePkg;
+ private static HashSet<String> mDisallowList;
+ // modified end <<<
+
BroadcastQueue mFgBroadcastQueue;
BroadcastQueue mBgBroadcastQueue;
BroadcastQueue mOffloadBroadcastQueue;
@@ -3228,11 +3233,72 @@ public class ActivityManagerService extends IActivityManager.Stub
}
}
+ // modified by weitf (20220817) (Disallow Auto Start) start <<<
+ private void getDisallowAutoStartList() {
+ String[] disallowList = mContext.getResources().getSystem().getStringArray(com.android.internal.R.array.disallow_auto_start_list);
+ mDisallowList = new HashSet<>(Arrays.asList(disallowList));
+ Iterator iter = mDisallowList.iterator();
+ while(iter.hasNext()){
+ Slog.d(TAG, "weitf Disallow Auto Start getDisallowAutoStartList: item:"+(String)iter.next());
+ }
+ }
+
+ private final int getRunningProcessRecordIndex(String packageName) {
+ // Find the application record.
+ if(packageName == null){
+ return -1;
+ }
+ for (int i=mProcessList.mLruProcesses.size()-1; i>=0; i--) {
+ ProcessRecord rec = mProcessList.mLruProcesses.get(i);
+ if (rec.thread != null && packageName.equals(rec.processName)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ final boolean isDisallowAutoStart(ApplicationInfo info, String hostingType) {
+ if(mDisallowList == null){
+ getDisallowAutoStartList();
+ }
+ String launchPkg = info.packageName;
+ Slog.i(TAG, "weitf Disallow Auto Start name ["+launchPkg+"] isSystemApp: " + info.isSystemApp());
+ boolean isRunningApp = getRunningProcessRecordIndex(launchPkg) != -1;
+ if(isRunningApp){
+ Slog.d(TAG, "weitf Disallow Auto Start Launch: " + launchPkg + " " + hostingType);
+ return false;
+ }
+ if(launchPkg.equals(mCachePkg)){
+ Slog.d(TAG, "weitf Disallow Auto Start Launch for cache: " + launchPkg + " " + hostingType);
+ return false;
+ }
+ if ("service".equals(hostingType) || "broadcast".equals(hostingType) || "content provider".equals(hostingType)) {
+ if (mDisallowList.contains(launchPkg)) {
+ Slog.d(TAG, "weitf Disallow Auto Start intercept: " + launchPkg + " " + hostingType + " " + info.processName);
+ return true;
+ } else {
+ Slog.d(TAG, "weitf Disallow Auto Start allowed: " + launchPkg + " " + hostingType + " " + info.processName);
+ return false;
+ }
+ }
+ mCachePkg = launchPkg;
+ return false;
+ }
+ // modified end <<<
+
@GuardedBy("this")
final ProcessRecord startProcessLocked(String processName,
ApplicationInfo info, boolean knownToBeDead, int intentFlags,
HostingRecord hostingRecord, int zygotePolicyFlags, boolean allowWhileBooting,
boolean isolated, boolean keepIfLarge) {
+ // modified by weitf (20220817) (Disallow Auto Start) start <<<
+ if (isDisallowAutoStart(info, hostingRecord.getType())) {
+ String launchPkg = info.packageName;
+ Slog.i(TAG, "weitf Disallow Auto Start name ["+launchPkg+"] isSystemApp: " + info.isSystemApp());
+ return null;
+ }
+ // modified end >>>
+
return mProcessList.startProcessLocked(processName, info, knownToBeDead, intentFlags,
hostingRecord, zygotePolicyFlags, allowWhileBooting, isolated, 0 /* isolatedUid */,
keepIfLarge, null /* ABI override */, null /* entryPoint */,
603

被折叠的 条评论
为什么被折叠?



