Skip to content

Commit b781186

Browse files
committed
Creating a new BackgroundExecutor class provided as part of the API, instead of being generated (cleaner code)
1 parent ae63f6d commit b781186

5 files changed

Lines changed: 19 additions & 28 deletions

File tree

‎AndroidAnnotations/pom.xml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@
100100
<classifier>api</classifier>
101101
<includes>
102102
<include>com/googlecode/androidannotations/annotations/**</include>
103+
<include>com/googlecode/androidannotations/api/**</include>
103104
</includes>
104105
</configuration>
105106
</execution>

‎AndroidAnnotations/src/main/java/com/googlecode/androidannotations/AndroidAnnotationProcessor.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ private ModelProcessor buildModelProcessor(IRClass rClass, AndroidSystemServices
271271
}
272272
modelProcessor.register(new UiThreadProcessor());
273273
modelProcessor.register(new UiThreadDelayedProcessor());
274-
modelProcessor.register(new BackgroundProcessor(androidManifest));
274+
modelProcessor.register(new BackgroundProcessor());
275275
modelProcessor.register(new TransactionalProcessor());
276276
modelProcessor.register(new ExtraProcessor());
277277
modelProcessor.register(new SystemServiceProcessor(androidSystemServices));
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.googlecode.androidannotations.api;
2+
import java.util.concurrent.Executor;
3+
import java.util.concurrent.Executors;
4+
5+
public class BackgroundExecutor_ {
6+
7+
private final static Executor executor = Executors.newCachedThreadPool();
8+
9+
public static void execute(Runnable runnable) {
10+
executor.execute(runnable);
11+
}
12+
13+
}

‎AndroidAnnotations/src/main/java/com/googlecode/androidannotations/processing/ActivitiesHolder.java‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,9 @@
55

66
import javax.lang.model.element.Element;
77

8-
import com.sun.codemodel.JDefinedClass;
9-
import com.sun.codemodel.JMethod;
10-
118
public class ActivitiesHolder {
129

1310
private Map<Element, ActivityHolder> activityHolders = new HashMap<Element, ActivityHolder>();
14-
public JMethod executorMethod;
15-
public JDefinedClass backgroundExecutor;
1611

1712
public ActivityHolder create(Element activityElement) {
1813
ActivityHolder activityHolder = new ActivityHolder();

‎AndroidAnnotations/src/main/java/com/googlecode/androidannotations/processing/BackgroundProcessor.java‎

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,13 @@
1818
import java.lang.annotation.Annotation;
1919
import java.util.ArrayList;
2020
import java.util.List;
21-
import java.util.concurrent.Executor;
22-
import java.util.concurrent.Executors;
2321

2422
import javax.lang.model.element.Element;
2523
import javax.lang.model.element.ExecutableElement;
2624
import javax.lang.model.element.VariableElement;
2725

2826
import com.googlecode.androidannotations.annotations.Background;
29-
import com.googlecode.androidannotations.helper.AndroidManifest;
27+
import com.googlecode.androidannotations.api.BackgroundExecutor_;
3028
import com.sun.codemodel.JBlock;
3129
import com.sun.codemodel.JCatchBlock;
3230
import com.sun.codemodel.JClass;
@@ -35,7 +33,6 @@
3533
import com.sun.codemodel.JDefinedClass;
3634
import com.sun.codemodel.JExpr;
3735
import com.sun.codemodel.JExpression;
38-
import com.sun.codemodel.JFieldVar;
3936
import com.sun.codemodel.JInvocation;
4037
import com.sun.codemodel.JMethod;
4138
import com.sun.codemodel.JMod;
@@ -44,12 +41,6 @@
4441

4542
public class BackgroundProcessor implements ElementProcessor {
4643

47-
private final AndroidManifest androidManifest;
48-
49-
public BackgroundProcessor(AndroidManifest androidManifest) {
50-
this.androidManifest = androidManifest;
51-
}
52-
5344
@Override
5445
public Class<? extends Annotation> getTarget() {
5546
return Background.class;
@@ -60,17 +51,6 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
6051

6152
ActivityHolder holder = activitiesHolder.getEnclosingActivityHolder(element);
6253

63-
if (activitiesHolder.backgroundExecutor == null) {
64-
activitiesHolder.backgroundExecutor = codeModel._class(androidManifest.getApplicationPackage() + ".BackgroundExecutor_");
65-
66-
JInvocation newCachedThreadPool = codeModel.ref(Executors.class).staticInvoke("newCachedThreadPool");
67-
68-
JFieldVar executorStaticField = activitiesHolder.backgroundExecutor.field(JMod.STATIC | JMod.PRIVATE | JMod.FINAL, codeModel.ref(Executor.class), "executor", newCachedThreadPool);
69-
activitiesHolder.executorMethod = activitiesHolder.backgroundExecutor.method(JMod.PUBLIC | JMod.STATIC, codeModel.VOID, "execute");
70-
JVar runnableParam = activitiesHolder.executorMethod.param(Runnable.class, "runnable");
71-
activitiesHolder.executorMethod.body().invoke(executorStaticField, "execute").arg(runnableParam);
72-
}
73-
7454
// Method
7555
String backgroundMethodName = element.getSimpleName().toString();
7656
JMethod backgroundMethod = holder.activity.method(JMod.PUBLIC, codeModel.VOID, backgroundMethodName);
@@ -115,7 +95,9 @@ public void process(Element element, JCodeModel codeModel, ActivitiesHolder acti
11595

11696
JBlock backgroundBody = backgroundMethod.body();
11797

118-
JInvocation executeCall = activitiesHolder.backgroundExecutor.staticInvoke(activitiesHolder.executorMethod).arg(JExpr._new(anonymousRunnableClass));
98+
JClass backgroundExecutorClass = codeModel.ref(BackgroundExecutor_.class);
99+
100+
JInvocation executeCall = backgroundExecutorClass.staticInvoke("execute").arg(JExpr._new(anonymousRunnableClass));
119101

120102
backgroundBody.add(executeCall);
121103
}

0 commit comments

Comments
 (0)