Skip to content

Commit 11d093b

Browse files
committed
Code Format and Rename
Signed-off-by: limpoxe <405977146@163.com>
1 parent 58b92bc commit 11d093b

19 files changed

+373
-465
lines changed
Lines changed: 136 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
11
package com.plugin.core;
22

3-
import com.plugin.core.ui.stub.PluginStubReceiver;
4-
import com.plugin.util.LogUtil;
5-
import com.plugin.util.RefInvoker;
6-
7-
import android.content.ComponentName;
8-
import android.content.Intent;
93
import android.os.Handler;
104
import android.os.Message;
115

6+
import com.plugin.util.LogUtil;
7+
128
/**
139
* 插件Receiver免注册的主要实现原理
10+
*
1411
* @author cailiming
15-
*
12+
*
1613
*/
1714
public class PluginAppTrace implements Handler.Callback {
18-
15+
1916
private final Handler mHandler;
2017

2118
protected PluginAppTrace(Handler handler) {
@@ -27,7 +24,7 @@ public boolean handleMessage(Message msg) {
2724
try {
2825
LogUtil.d(">>> handling: ", CodeConst.codeToString(msg.what));
2926
if (msg.what == CodeConst.RECEIVER) {
30-
hackReceiverIfNeed(msg.obj);
27+
PluginIntentResolver.hackReceiverForClassLoader(msg.obj);
3128
}
3229
mHandler.handleMessage(msg);
3330
LogUtil.d(">>> done: " + CodeConst.codeToString(msg.what));
@@ -37,108 +34,136 @@ public boolean handleMessage(Message msg) {
3734
return true;
3835
}
3936

40-
private static void hackReceiverIfNeed(Object msgObj) {
41-
Intent intent = (Intent)RefInvoker.getFieldObject(msgObj, "android.app.ActivityThread$ReceiverData", "intent");
42-
if (intent.getComponent().getClassName().equals(PluginStubReceiver.class.getName())) {
43-
Intent realIntent = (Intent)(intent.getParcelableExtra(PluginFragmentHelper.RECEIVER_ID_IN_PLUGIN));
44-
LogUtil.d("receiver", realIntent.toUri(0));
45-
intent.putExtras(realIntent.getExtras());
46-
String realClassName = PluginLoader.isMatchPlugin(realIntent);
47-
//classLoader检测到这个特殊标记后会进行替换
48-
intent.setComponent(new ComponentName(intent.getComponent().getPackageName(),
49-
PluginStubReceiver.class.getName() + "." + realClassName));
50-
}
51-
}
52-
5337
private static class CodeConst {
54-
public static final int LAUNCH_ACTIVITY = 100;
55-
public static final int PAUSE_ACTIVITY = 101;
56-
public static final int PAUSE_ACTIVITY_FINISHING= 102;
57-
public static final int STOP_ACTIVITY_SHOW = 103;
58-
public static final int STOP_ACTIVITY_HIDE = 104;
59-
public static final int SHOW_WINDOW = 105;
60-
public static final int HIDE_WINDOW = 106;
61-
public static final int RESUME_ACTIVITY = 107;
62-
public static final int SEND_RESULT = 108;
63-
public static final int DESTROY_ACTIVITY = 109;
64-
public static final int BIND_APPLICATION = 110;
65-
public static final int EXIT_APPLICATION = 111;
66-
public static final int NEW_INTENT = 112;
67-
public static final int RECEIVER = 113;
68-
public static final int CREATE_SERVICE = 114;
69-
public static final int SERVICE_ARGS = 115;
70-
public static final int STOP_SERVICE = 116;
71-
public static final int REQUEST_THUMBNAIL = 117;
72-
public static final int CONFIGURATION_CHANGED = 118;
73-
public static final int CLEAN_UP_CONTEXT = 119;
74-
public static final int GC_WHEN_IDLE = 120;
75-
public static final int BIND_SERVICE = 121;
76-
public static final int UNBIND_SERVICE = 122;
77-
public static final int DUMP_SERVICE = 123;
78-
public static final int LOW_MEMORY = 124;
79-
public static final int ACTIVITY_CONFIGURATION_CHANGED = 125;
80-
public static final int RELAUNCH_ACTIVITY = 126;
81-
public static final int PROFILER_CONTROL = 127;
82-
public static final int CREATE_BACKUP_AGENT = 128;
83-
public static final int DESTROY_BACKUP_AGENT = 129;
84-
public static final int SUICIDE = 130;
85-
public static final int REMOVE_PROVIDER = 131;
86-
public static final int ENABLE_JIT = 132;
87-
public static final int DISPATCH_PACKAGE_BROADCAST = 133;
88-
public static final int SCHEDULE_CRASH = 134;
89-
public static final int DUMP_HEAP = 135;
90-
public static final int DUMP_ACTIVITY = 136;
91-
public static final int SLEEPING = 137;
92-
public static final int SET_CORE_SETTINGS = 138;
93-
public static final int UPDATE_PACKAGE_COMPATIBILITY_INFO = 139;
94-
public static final int TRIM_MEMORY = 140;
95-
96-
public static String codeToString(int code) {
97-
switch (code) {
98-
case LAUNCH_ACTIVITY: return "LAUNCH_ACTIVITY";
99-
case PAUSE_ACTIVITY: return "PAUSE_ACTIVITY";
100-
case PAUSE_ACTIVITY_FINISHING: return "PAUSE_ACTIVITY_FINISHING";
101-
case STOP_ACTIVITY_SHOW: return "STOP_ACTIVITY_SHOW";
102-
case STOP_ACTIVITY_HIDE: return "STOP_ACTIVITY_HIDE";
103-
case SHOW_WINDOW: return "SHOW_WINDOW";
104-
case HIDE_WINDOW: return "HIDE_WINDOW";
105-
case RESUME_ACTIVITY: return "RESUME_ACTIVITY";
106-
case SEND_RESULT: return "SEND_RESULT";
107-
case DESTROY_ACTIVITY: return "DESTROY_ACTIVITY";
108-
case BIND_APPLICATION: return "BIND_APPLICATION";
109-
case EXIT_APPLICATION: return "EXIT_APPLICATION";
110-
case NEW_INTENT: return "NEW_INTENT";
111-
case RECEIVER: return "RECEIVER";
112-
case CREATE_SERVICE: return "CREATE_SERVICE";
113-
case SERVICE_ARGS: return "SERVICE_ARGS";
114-
case STOP_SERVICE: return "STOP_SERVICE";
115-
case REQUEST_THUMBNAIL: return "REQUEST_THUMBNAIL";
116-
case CONFIGURATION_CHANGED: return "CONFIGURATION_CHANGED";
117-
case CLEAN_UP_CONTEXT: return "CLEAN_UP_CONTEXT";
118-
case GC_WHEN_IDLE: return "GC_WHEN_IDLE";
119-
case BIND_SERVICE: return "BIND_SERVICE";
120-
case UNBIND_SERVICE: return "UNBIND_SERVICE";
121-
case DUMP_SERVICE: return "DUMP_SERVICE";
122-
case LOW_MEMORY: return "LOW_MEMORY";
123-
case ACTIVITY_CONFIGURATION_CHANGED: return "ACTIVITY_CONFIGURATION_CHANGED";
124-
case RELAUNCH_ACTIVITY: return "RELAUNCH_ACTIVITY";
125-
case PROFILER_CONTROL: return "PROFILER_CONTROL";
126-
case CREATE_BACKUP_AGENT: return "CREATE_BACKUP_AGENT";
127-
case DESTROY_BACKUP_AGENT: return "DESTROY_BACKUP_AGENT";
128-
case SUICIDE: return "SUICIDE";
129-
case REMOVE_PROVIDER: return "REMOVE_PROVIDER";
130-
case ENABLE_JIT: return "ENABLE_JIT";
131-
case DISPATCH_PACKAGE_BROADCAST: return "DISPATCH_PACKAGE_BROADCAST";
132-
case SCHEDULE_CRASH: return "SCHEDULE_CRASH";
133-
case DUMP_HEAP: return "DUMP_HEAP";
134-
case DUMP_ACTIVITY: return "DUMP_ACTIVITY";
135-
case SLEEPING: return "SLEEPING";
136-
case SET_CORE_SETTINGS: return "SET_CORE_SETTINGS";
137-
case UPDATE_PACKAGE_COMPATIBILITY_INFO: return "UPDATE_PACKAGE_COMPATIBILITY_INFO";
138-
case TRIM_MEMORY: return "TRIM_MEMORY";
139-
}
140-
return "(unknown)";
141-
}
38+
public static final int LAUNCH_ACTIVITY = 100;
39+
public static final int PAUSE_ACTIVITY = 101;
40+
public static final int PAUSE_ACTIVITY_FINISHING = 102;
41+
public static final int STOP_ACTIVITY_SHOW = 103;
42+
public static final int STOP_ACTIVITY_HIDE = 104;
43+
public static final int SHOW_WINDOW = 105;
44+
public static final int HIDE_WINDOW = 106;
45+
public static final int RESUME_ACTIVITY = 107;
46+
public static final int SEND_RESULT = 108;
47+
public static final int DESTROY_ACTIVITY = 109;
48+
public static final int BIND_APPLICATION = 110;
49+
public static final int EXIT_APPLICATION = 111;
50+
public static final int NEW_INTENT = 112;
51+
public static final int RECEIVER = 113;
52+
public static final int CREATE_SERVICE = 114;
53+
public static final int SERVICE_ARGS = 115;
54+
public static final int STOP_SERVICE = 116;
55+
public static final int REQUEST_THUMBNAIL = 117;
56+
public static final int CONFIGURATION_CHANGED = 118;
57+
public static final int CLEAN_UP_CONTEXT = 119;
58+
public static final int GC_WHEN_IDLE = 120;
59+
public static final int BIND_SERVICE = 121;
60+
public static final int UNBIND_SERVICE = 122;
61+
public static final int DUMP_SERVICE = 123;
62+
public static final int LOW_MEMORY = 124;
63+
public static final int ACTIVITY_CONFIGURATION_CHANGED = 125;
64+
public static final int RELAUNCH_ACTIVITY = 126;
65+
public static final int PROFILER_CONTROL = 127;
66+
public static final int CREATE_BACKUP_AGENT = 128;
67+
public static final int DESTROY_BACKUP_AGENT = 129;
68+
public static final int SUICIDE = 130;
69+
public static final int REMOVE_PROVIDER = 131;
70+
public static final int ENABLE_JIT = 132;
71+
public static final int DISPATCH_PACKAGE_BROADCAST = 133;
72+
public static final int SCHEDULE_CRASH = 134;
73+
public static final int DUMP_HEAP = 135;
74+
public static final int DUMP_ACTIVITY = 136;
75+
public static final int SLEEPING = 137;
76+
public static final int SET_CORE_SETTINGS = 138;
77+
public static final int UPDATE_PACKAGE_COMPATIBILITY_INFO = 139;
78+
public static final int TRIM_MEMORY = 140;
79+
80+
public static String codeToString(int code) {
81+
switch (code) {
82+
case LAUNCH_ACTIVITY:
83+
return "LAUNCH_ACTIVITY";
84+
case PAUSE_ACTIVITY:
85+
return "PAUSE_ACTIVITY";
86+
case PAUSE_ACTIVITY_FINISHING:
87+
return "PAUSE_ACTIVITY_FINISHING";
88+
case STOP_ACTIVITY_SHOW:
89+
return "STOP_ACTIVITY_SHOW";
90+
case STOP_ACTIVITY_HIDE:
91+
return "STOP_ACTIVITY_HIDE";
92+
case SHOW_WINDOW:
93+
return "SHOW_WINDOW";
94+
case HIDE_WINDOW:
95+
return "HIDE_WINDOW";
96+
case RESUME_ACTIVITY:
97+
return "RESUME_ACTIVITY";
98+
case SEND_RESULT:
99+
return "SEND_RESULT";
100+
case DESTROY_ACTIVITY:
101+
return "DESTROY_ACTIVITY";
102+
case BIND_APPLICATION:
103+
return "BIND_APPLICATION";
104+
case EXIT_APPLICATION:
105+
return "EXIT_APPLICATION";
106+
case NEW_INTENT:
107+
return "NEW_INTENT";
108+
case RECEIVER:
109+
return "RECEIVER";
110+
case CREATE_SERVICE:
111+
return "CREATE_SERVICE";
112+
case SERVICE_ARGS:
113+
return "SERVICE_ARGS";
114+
case STOP_SERVICE:
115+
return "STOP_SERVICE";
116+
case REQUEST_THUMBNAIL:
117+
return "REQUEST_THUMBNAIL";
118+
case CONFIGURATION_CHANGED:
119+
return "CONFIGURATION_CHANGED";
120+
case CLEAN_UP_CONTEXT:
121+
return "CLEAN_UP_CONTEXT";
122+
case GC_WHEN_IDLE:
123+
return "GC_WHEN_IDLE";
124+
case BIND_SERVICE:
125+
return "BIND_SERVICE";
126+
case UNBIND_SERVICE:
127+
return "UNBIND_SERVICE";
128+
case DUMP_SERVICE:
129+
return "DUMP_SERVICE";
130+
case LOW_MEMORY:
131+
return "LOW_MEMORY";
132+
case ACTIVITY_CONFIGURATION_CHANGED:
133+
return "ACTIVITY_CONFIGURATION_CHANGED";
134+
case RELAUNCH_ACTIVITY:
135+
return "RELAUNCH_ACTIVITY";
136+
case PROFILER_CONTROL:
137+
return "PROFILER_CONTROL";
138+
case CREATE_BACKUP_AGENT:
139+
return "CREATE_BACKUP_AGENT";
140+
case DESTROY_BACKUP_AGENT:
141+
return "DESTROY_BACKUP_AGENT";
142+
case SUICIDE:
143+
return "SUICIDE";
144+
case REMOVE_PROVIDER:
145+
return "REMOVE_PROVIDER";
146+
case ENABLE_JIT:
147+
return "ENABLE_JIT";
148+
case DISPATCH_PACKAGE_BROADCAST:
149+
return "DISPATCH_PACKAGE_BROADCAST";
150+
case SCHEDULE_CRASH:
151+
return "SCHEDULE_CRASH";
152+
case DUMP_HEAP:
153+
return "DUMP_HEAP";
154+
case DUMP_ACTIVITY:
155+
return "DUMP_ACTIVITY";
156+
case SLEEPING:
157+
return "SLEEPING";
158+
case SET_CORE_SETTINGS:
159+
return "SET_CORE_SETTINGS";
160+
case UPDATE_PACKAGE_COMPATIBILITY_INFO:
161+
return "UPDATE_PACKAGE_COMPATIBILITY_INFO";
162+
case TRIM_MEMORY:
163+
return "TRIM_MEMORY";
164+
}
165+
return "(unknown)";
166+
}
142167
}
143-
168+
144169
}

PluginCore/src/com/plugin/core/PluginApplication.java

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import android.content.Intent;
77
import android.os.Handler;
88

9-
import com.plugin.core.proxy.PluginProxyService;
10-
import com.plugin.core.ui.stub.PluginStubReceiver;
119
import com.plugin.util.LogUtil;
1210
import com.plugin.util.RefInvoker;
1311

@@ -22,9 +20,7 @@ public String getProcessName() {
2220
@Override
2321
public void onCreate() {
2422
super.onCreate();
25-
2623
injectInstrumentation();
27-
injectClassLoader();
2824
}
2925

3026
/**
@@ -54,52 +50,38 @@ private void injectInstrumentation() {
5450

5551
}
5652

57-
/**
58-
* 注入classloader主要是为了支持Service和Receiver
59-
*/
60-
private void injectClassLoader() {
61-
//
62-
LogUtil.d("injectClassLoader");
63-
}
64-
6553
@Override
6654
public void sendBroadcast(Intent intent) {
6755
LogUtil.d("sendBroadcast", intent.toUri(0));
68-
Intent realIntent = intent;
69-
if (PluginFragmentHelper.hackClassLoadForReceiverIfNeeded(intent)) {
70-
realIntent = new Intent();
71-
realIntent.setClass(PluginLoader.getApplicatoin(), PluginStubReceiver.class);
72-
realIntent.putExtra(PluginFragmentHelper.RECEIVER_ID_IN_PLUGIN, intent);
73-
}
74-
super.sendBroadcast(realIntent);
56+
intent = PluginIntentResolver.resolveReceiver(intent);
57+
super.sendBroadcast(intent);
7558
}
7659

7760
@Override
7861
public ComponentName startService(Intent service) {
7962
LogUtil.d("startService", service.toUri(0));
80-
PluginFragmentHelper.resolveService(service);
63+
PluginIntentResolver.resolveService(service);
8164
return super.startService(service);
8265
}
8366

8467
@Override
8568
public boolean stopService(Intent name) {
8669
LogUtil.d("stopService", name.toUri(0));
87-
if (PluginLoader.isMatchPlugin(name) != null) {
88-
PluginFragmentHelper.resolveService(name);
89-
name.putExtra(PluginProxyService.DESTORY_SERVICE, true);
70+
if (PluginIntentResolver.resolveStopService(name)) {
9071
super.startService(name);
9172
return false;
73+
} else {
74+
return super.stopService(name);
9275
}
93-
return super.stopService(name);
9476
}
9577

9678
/**
97-
* startActivity有很多重载的方法,如有必要,可以相应的重写
79+
* startActivity有很多重载的方法,如有必要,可以相应的进行重写
9880
*/
9981
@Override
10082
public void startActivity(Intent intent) {
10183
LogUtil.d("startActivity", intent.toUri(0));
102-
PluginInstrumentionWrapper.resloveIntent(intent);
84+
PluginIntentResolver.resloveActivity(intent);
10385
super.startActivity(intent);
10486
}
10587

0 commit comments

Comments
 (0)