Skip to content

Commit a6e4b53

Browse files
HugoCastelaniHugoCastelani
authored andcommitted
Update subutil context retrieval
1 parent 8d6d996 commit a6e4b53

File tree

3 files changed

+111
-23
lines changed

3 files changed

+111
-23
lines changed

subutil/src/main/java/com/blankj/subutil/util/ClipboardUtils.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ private ClipboardUtils() {
2626
* @param text 文本
2727
*/
2828
public static void copyText(final CharSequence text) {
29-
ClipboardManager clipboard = (ClipboardManager) Utils.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
29+
ClipboardManager clipboard = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE);
3030
clipboard.setPrimaryClip(ClipData.newPlainText("text", text));
3131
}
3232

@@ -36,10 +36,10 @@ public static void copyText(final CharSequence text) {
3636
* @return 剪贴板的文本
3737
*/
3838
public static CharSequence getText() {
39-
ClipboardManager clipboard = (ClipboardManager) Utils.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
39+
ClipboardManager clipboard = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE);
4040
ClipData clip = clipboard.getPrimaryClip();
4141
if (clip != null && clip.getItemCount() > 0) {
42-
return clip.getItemAt(0).coerceToText(Utils.getContext());
42+
return clip.getItemAt(0).coerceToText(Utils.getApp());
4343
}
4444
return null;
4545
}
@@ -50,8 +50,8 @@ public static CharSequence getText() {
5050
* @param uri uri
5151
*/
5252
public static void copyUri(final Uri uri) {
53-
ClipboardManager clipboard = (ClipboardManager) Utils.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
54-
clipboard.setPrimaryClip(ClipData.newUri(Utils.getContext().getContentResolver(), "uri", uri));
53+
ClipboardManager clipboard = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE);
54+
clipboard.setPrimaryClip(ClipData.newUri(Utils.getApp().getContentResolver(), "uri", uri));
5555
}
5656

5757
/**
@@ -60,7 +60,7 @@ public static void copyUri(final Uri uri) {
6060
* @return 剪贴板的uri
6161
*/
6262
public static Uri getUri() {
63-
ClipboardManager clipboard = (ClipboardManager) Utils.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
63+
ClipboardManager clipboard = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE);
6464
ClipData clip = clipboard.getPrimaryClip();
6565
if (clip != null && clip.getItemCount() > 0) {
6666
return clip.getItemAt(0).getUri();
@@ -74,7 +74,7 @@ public static Uri getUri() {
7474
* @param intent 意图
7575
*/
7676
public static void copyIntent(final Intent intent) {
77-
ClipboardManager clipboard = (ClipboardManager) Utils.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
77+
ClipboardManager clipboard = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE);
7878
clipboard.setPrimaryClip(ClipData.newIntent("intent", intent));
7979
}
8080

@@ -84,7 +84,7 @@ public static void copyIntent(final Intent intent) {
8484
* @return 剪贴板的意图
8585
*/
8686
public static Intent getIntent() {
87-
ClipboardManager clipboard = (ClipboardManager) Utils.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
87+
ClipboardManager clipboard = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE);
8888
ClipData clip = clipboard.getPrimaryClip();
8989
if (clip != null && clip.getItemCount() > 0) {
9090
return clip.getItemAt(0).getIntent();

subutil/src/main/java/com/blankj/subutil/util/LocationUtils.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ private LocationUtils() {
110110
* @return {@code true}: 是<br>{@code false}: 否
111111
*/
112112
public static boolean isGpsEnabled() {
113-
LocationManager lm = (LocationManager) Utils.getContext().getSystemService(LOCATION_SERVICE);
113+
LocationManager lm = (LocationManager) Utils.getApp().getSystemService(LOCATION_SERVICE);
114114
return lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
115115
}
116116

@@ -120,7 +120,7 @@ public static boolean isGpsEnabled() {
120120
* @return {@code true}: 是<br>{@code false}: 否
121121
*/
122122
public static boolean isLocationEnabled() {
123-
LocationManager lm = (LocationManager) Utils.getContext().getSystemService(LOCATION_SERVICE);
123+
LocationManager lm = (LocationManager) Utils.getApp().getSystemService(LOCATION_SERVICE);
124124
return lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER) || lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
125125
}
126126

@@ -130,7 +130,7 @@ public static boolean isLocationEnabled() {
130130
public static void openGpsSettings() {
131131
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
132132
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
133-
Utils.getContext().startActivity(intent);
133+
Utils.getApp().startActivity(intent);
134134
}
135135

136136
/**
@@ -150,7 +150,7 @@ public static void openGpsSettings() {
150150
*/
151151
public static boolean register(long minTime, long minDistance, OnLocationChangeListener listener) {
152152
if (listener == null) return false;
153-
mLocationManager = (LocationManager) Utils.getContext().getSystemService(LOCATION_SERVICE);
153+
mLocationManager = (LocationManager) Utils.getApp().getSystemService(LOCATION_SERVICE);
154154
mListener = listener;
155155
if (!isLocationEnabled()) {
156156
Log.d(TAG, "无法定位,请打开定位服务");
@@ -208,7 +208,7 @@ private static Criteria getCriteria() {
208208
* @return {@link Address}
209209
*/
210210
public static Address getAddress(double latitude, double longitude) {
211-
Geocoder geocoder = new Geocoder(Utils.getContext(), Locale.getDefault());
211+
Geocoder geocoder = new Geocoder(Utils.getApp(), Locale.getDefault());
212212
try {
213213
List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
214214
if (addresses.size() > 0) return addresses.get(0);
Lines changed: 98 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,102 @@
11
package com.blankj.subutil.util;
22

33
import android.annotation.SuppressLint;
4-
import android.content.Context;
4+
import android.app.Activity;
5+
import android.app.Application;
6+
import android.os.Bundle;
57
import android.support.annotation.NonNull;
68

9+
import java.lang.ref.WeakReference;
10+
import java.util.LinkedList;
11+
import java.util.List;
12+
713
/**
814
* <pre>
915
* author: Blankj
1016
* blog : http://blankj.com
1117
* time : 16/12/08
1218
* desc : Utils初始化相关
1319
* </pre>
20+
*          瓦瓦            十
21+
*         十齱龠己         亅瓦車己
22+
*         乙龍龠毋日丶      丶乙己毋毋丶
23+
*         十龠馬鬼車瓦      己十瓦毋毋
24+
*          鬼馬龠馬龠十    己己毋車毋瓦
25+
*          毋龠龠龍龠鬼乙丶丶乙車乙毋鬼車己
26+
*          乙龠龍龍鬼龍瓦 十瓦毋乙瓦龠瓦亅
27+
*           馬齱龍馬鬼十丶日己己己毋車乙丶
28+
*           己齱馬鬼車十十毋日乙己己乙乙
29+
*            車馬齱齱日乙毋瓦己乙瓦日亅
30+
*            亅車齺龖瓦乙車龖龍乙乙十
31+
*             日龠龠十亅車龍毋十十
32+
*             日毋己亅 己己十亅亅
33+
*            丶己十十乙  丶丶丶丶丶
34+
*            亅己十龍龖瓦  丶 丶 乙十
35+
*            亅己十龠龖毋 丶丶  丶己鬼鬼瓦亅
36+
*            十日十十日亅丶亅丶 丶十日毋鬼馬馬車乙
37+
*            十日乙十亅亅亅丶  十乙己毋鬼鬼鬼龍齺馬乙
38+
*            丶瓦己乙十十亅丶亅乙乙乙己毋鬼鬼鬼龍齱齺齺鬼十
39+
*             乙乙十十十亅乙瓦瓦己日瓦毋鬼鬼龠齱齱龍龍齱齱毋丶
40+
*             亅十十十十乙瓦車毋瓦瓦日車馬龠龍龍龍龍龍龠龠龠馬亅
41+
*              十十十十己毋車瓦瓦瓦瓦鬼馬龠龍龠龠龍龠龠龠馬龠車
42+
*               亅十十日毋瓦日日瓦鬼鬼鬼龠龠馬馬龠龍龍龠馬馬車
43+
*               亅亅亅乙瓦瓦毋車車車馬龍龠鬼鬼馬龠龍龍龠馬馬鬼
44+
*             丶丶乙亅亅乙車鬼鬼鬼毋車龍龍龠鬼馬馬龠龍齱齱龍馬鬼
45+
*            亅己十十己十日鬼鬼車瓦毋龠龍龠馬馬龠龠龠齱齺齺齱龠鬼
46+
*             亅乙乙乙十車馬車毋馬齱齱龍龠龠龠馬龠龍齱龍龠龠鬼瓦
47+
*                 丶毋龠鬼車瓦車馬龠龍龠龠龍齱齱龠馬馬鬼毋日
48+
*                 十乙己日十  丶己鬼龍齱齺齱龍馬馬馬車毋己
49+
*               丶十己乙亅丶      亅瓦馬龠龍龠龠馬毋瓦乙
50+
*              丶十十乙亅十        亅己瓦車馬龠鬼車瓦乙
51+
*              丶十乙十十丶         丶丶亅十瓦鬼車瓦己
52+
*               丶亅亅丶               亅日瓦日
53+
*                                     丶
1454
*/
1555
public final class Utils {
1656

1757
@SuppressLint("StaticFieldLeak")
18-
private static Context context;
58+
private static Application sApplication;
59+
60+
static WeakReference<Activity> sTopActivityWeakRef;
61+
static List<Activity> sActivityList = new LinkedList<>();
62+
63+
private static Application.ActivityLifecycleCallbacks mCallbacks = new Application.ActivityLifecycleCallbacks() {
64+
@Override
65+
public void onActivityCreated(Activity activity, Bundle bundle) {
66+
sActivityList.add(activity);
67+
setTopActivityWeakRef(activity);
68+
}
69+
70+
@Override
71+
public void onActivityStarted(Activity activity) {
72+
setTopActivityWeakRef(activity);
73+
}
74+
75+
@Override
76+
public void onActivityResumed(Activity activity) {
77+
setTopActivityWeakRef(activity);
78+
}
79+
80+
@Override
81+
public void onActivityPaused(Activity activity) {
82+
83+
}
84+
85+
@Override
86+
public void onActivityStopped(Activity activity) {
87+
88+
}
89+
90+
@Override
91+
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
92+
93+
}
94+
95+
@Override
96+
public void onActivityDestroyed(Activity activity) {
97+
sActivityList.remove(activity);
98+
}
99+
};
19100

20101
private Utils() {
21102
throw new UnsupportedOperationException("u can't instantiate me...");
@@ -24,19 +105,26 @@ private Utils() {
24105
/**
25106
* 初始化工具类
26107
*
27-
* @param context 上下文
108+
* @param app 应用
28109
*/
29-
public static void init(@NonNull final Context context) {
30-
Utils.context = context.getApplicationContext();
110+
public static void init(@NonNull final Application app) {
111+
Utils.sApplication = app;
112+
app.registerActivityLifecycleCallbacks(mCallbacks);
31113
}
32114

33115
/**
34-
* 获取ApplicationContext
116+
* 获取 Application
35117
*
36-
* @return ApplicationContext
118+
* @return Application
37119
*/
38-
public static Context getContext() {
39-
if (context != null) return context;
120+
public static Application getApp() {
121+
if (sApplication != null) return sApplication;
40122
throw new NullPointerException("u should init first");
41123
}
42-
}
124+
125+
private static void setTopActivityWeakRef(Activity activity) {
126+
if (sTopActivityWeakRef == null || !activity.equals(sTopActivityWeakRef.get())) {
127+
sTopActivityWeakRef = new WeakReference<>(activity);
128+
}
129+
}
130+
}

0 commit comments

Comments
 (0)