Skip to content

Commit af6d5a1

Browse files
committed
Rework theme export task to fix thread warnings
1 parent d04f3a7 commit af6d5a1

File tree

1 file changed

+30
-20
lines changed
  • dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/theme/task

1 file changed

+30
-20
lines changed

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/theme/task/ThemeExportTask.java

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,15 @@
3131
import com.pranavpandey.android.dynamic.util.DynamicFileUtils;
3232
import com.pranavpandey.android.dynamic.util.concurrent.DynamicResult;
3333
import com.pranavpandey.android.dynamic.util.concurrent.DynamicTask;
34+
import com.pranavpandey.android.dynamic.util.concurrent.task.ContextTask;
3435

3536
/**
3637
* A {@link DynamicTask} to perform the theme related operations.
3738
*
3839
* @param <V> The type of the dynamic app theme.
3940
*/
4041
public abstract class ThemeExportTask<V extends DynamicAppTheme>
41-
extends DynamicTask<Void, Void, Uri> {
42+
extends ContextTask<Void, Void, Uri> {
4243

4344
/**
4445
* Theme action to perform the operation accordingly.
@@ -55,6 +56,11 @@ public abstract class ThemeExportTask<V extends DynamicAppTheme>
5556
*/
5657
private final ThemeListener<V> mThemeListener;
5758

59+
/**
60+
* The dynamic theme returned by the listener.
61+
*/
62+
private final V mDynamicTheme;
63+
5864
/**
5965
* Constructor to initialize an object of this class.
6066
*
@@ -63,8 +69,14 @@ public abstract class ThemeExportTask<V extends DynamicAppTheme>
6369
*/
6470
public ThemeExportTask(@Theme.Action int themeAction,
6571
@Nullable ThemeListener<V> themeListener) {
72+
super(themeListener != null && themeListener.getThemePreview() != null
73+
? themeListener.getThemePreview().getContext() : null);
74+
6675
this.mThemeAction = themeAction;
6776
this.mThemeListener = themeListener;
77+
this.mDynamicTheme = getThemeListener() != null
78+
|| getThemeListener().getThemePreview() != null
79+
? themeListener.getThemePreview().getDynamicTheme() : null;
6880
}
6981

7082
@Override
@@ -85,35 +97,24 @@ protected void onPreExecute() {
8597

8698
@Override
8799
protected @Nullable Uri doInBackground(@Nullable Void params) {
88-
if (getThemeListener() == null) {
89-
return null;
90-
}
91-
92-
if (getThemeListener().getThemePreview() == null) {
100+
if (getContext() == null || getThemeListener() == null || getDynamicTheme() == null) {
93101
return null;
94102
}
95103

96104
if (getThemeAction() == Theme.Action.SHARE_CODE
97105
|| getThemeAction() == Theme.Action.SAVE_CODE) {
98-
mThemeBitmap = DynamicCodeUtils.generateThemeCode(
99-
getThemeListener().getThemePreview().getDynamicTheme(),
100-
DynamicResourceUtils.getDrawable(
101-
getThemeListener().getThemePreview().getContext(),
102-
getThemeListener().getThemePreview().getDynamicTheme().isDynamicColor()
103-
? R.drawable.adt_ic_app : R.drawable.ads_ic_style));
106+
mThemeBitmap = DynamicCodeUtils.generateThemeCode(getDynamicTheme(),
107+
DynamicResourceUtils.getDrawable(getContext(), getDynamicTheme()
108+
.isDynamicColor() ? R.drawable.adt_ic_app : R.drawable.ads_ic_style));
104109
}
105110

106111
if (getThemeAction() == Theme.Action.SHARE_FILE
107112
|| getThemeAction() == Theme.Action.SAVE_FILE) {
108-
return DynamicFileUtils.getUriFromFile(
109-
getThemeListener().getThemePreview().getContext(),
110-
DynamicThemeUtils.requestThemeFile(
111-
getThemeListener().getThemePreview().getContext(), Theme.NAME,
112-
getThemeListener().getThemePreview()
113-
.getDynamicTheme().toDynamicString()));
113+
return DynamicFileUtils.getUriFromFile(getContext(),
114+
DynamicThemeUtils.requestThemeFile(getContext(), Theme.NAME,
115+
getDynamicTheme().toDynamicString()));
114116
} else {
115-
return DynamicFileUtils.getBitmapUri(
116-
getThemeListener().getThemePreview().getContext(),
117+
return DynamicFileUtils.getBitmapUri(getContext(),
117118
getThemeBitmap(), Theme.Key.SHARE, Theme.EXTENSION_IMAGE);
118119
}
119120
}
@@ -156,6 +157,15 @@ protected void onPostExecute(@Nullable DynamicResult<Uri> result) {
156157
return mThemeListener;
157158
}
158159

160+
/**
161+
* Get the dynamic theme returned by the listener.
162+
*
163+
* @return The dynamic theme returned by the listener.
164+
*/
165+
public @Nullable V getDynamicTheme() {
166+
return mDynamicTheme;
167+
}
168+
159169
/**
160170
* Get the theme bitmap used by this task.
161171
*

0 commit comments

Comments
 (0)