Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mmm-rain
AndroidUtilCode
提交
e265d786
A
AndroidUtilCode
项目概览
mmm-rain
/
AndroidUtilCode
与 Fork 源项目一致
从无法访问的项目Fork
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
AndroidUtilCode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e265d786
编写于
12月 17, 2018
作者:
B
Blankj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
see 12/17 log
上级
050ff664
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
80 addition
and
54 deletion
+80
-54
CHANGELOG.md
CHANGELOG.md
+1
-0
README-CN.md
README-CN.md
+1
-1
README.md
README.md
+1
-1
launcher/app/__bus__.json
launcher/app/__bus__.json
+1
-0
lib/base/build.gradle
lib/base/build.gradle
+2
-2
subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.java
...main/java/com/blankj/subutil/pkg/helper/DialogHelper.java
+1
-1
utilcode/README-CN.md
utilcode/README-CN.md
+1
-1
utilcode/README-STATIC-BUS.md
utilcode/README-STATIC-BUS.md
+1
-1
utilcode/README.md
utilcode/README.md
+1
-1
utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
.../lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
+2
-2
utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
...ib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
+14
-15
utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
...ode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
+54
-29
未找到文件。
CHANGELOG.md
浏览文件 @
e265d786
*
`18/12/17`
[fix] ToastUtils leak. Publish v1.22.2.
*
`18/12/09`
[add] Component for the project.
*
`18/12/04`
[add] BusUtils. Publish v1.22.1.
*
`18/11/18`
[fix] ToastUtils don't show in the devices grater than API 24 when close the permission of notification. Publish v1.22.0.
...
...
README-CN.md
浏览文件 @
e265d786
...
...
@@ -41,7 +41,7 @@
[
logo
]:
https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png
[
aucSvg
]:
https://img.shields.io/badge/AndroidUtilCode-v1.22.
1
-brightgreen.svg
[
aucSvg
]:
https://img.shields.io/badge/AndroidUtilCode-v1.22.
2
-brightgreen.svg
[
auc
]:
https://github.com/Blankj/AndroidUtilCode
[
apiSvg
]:
https://img.shields.io/badge/API-14+-brightgreen.svg
...
...
README.md
浏览文件 @
e265d786
...
...
@@ -41,7 +41,7 @@ If this project helps you a lot and you want to support the project's developmen
[
logo
]:
https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png
[
aucSvg
]:
https://img.shields.io/badge/AndroidUtilCode-v1.22.
1
-brightgreen.svg
[
aucSvg
]:
https://img.shields.io/badge/AndroidUtilCode-v1.22.
2
-brightgreen.svg
[
auc
]:
https://github.com/Blankj/AndroidUtilCode
[
apiSvg
]:
https://img.shields.io/badge/API-14+-brightgreen.svg
...
...
launcher/app/__bus__.json
浏览文件 @
e265d786
{
"SubUtilActivity#start"
:
"void com.blankj.subutil.pkg.feature.SubUtilActivity.start(android.content.Context)"
,
"CoreUtilActivity#start"
:
"void com.blankj.utilcode.pkg.feature.CoreUtilActivity.start(android.content.Context)"
}
\ No newline at end of file
lib/base/build.gradle
浏览文件 @
e265d786
...
...
@@ -4,7 +4,7 @@ apply {
dependencies
{
implementation
fileTree
(
include:
[
'*.jar'
],
dir:
'libs'
)
api
project
(
':utilcode-lib'
)
//
api project(':utilcode-lib')
api
project
(
':subutil-lib'
)
api
dep
.
support
.
appcompat_v7
...
...
@@ -15,5 +15,5 @@ dependencies {
api
dep
.
free_proguard
api
'com.r0adkll:slidableactivity:2.0.5'
compileOnly
dep
.
leakcanary
.
android_no_op
// api 'com.blankj:utilcode:1.22.1
'
api
'com.blankj:utilcode:1.22.2
'
}
\ No newline at end of file
subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.java
浏览文件 @
e265d786
...
...
@@ -4,7 +4,7 @@ import android.app.Activity;
import
android.content.DialogInterface
;
import
android.support.v7.app.AlertDialog
;
import
com.blankj.subutil.
R.pkg
;
import
com.blankj.subutil.
pkg.R
;
import
com.blankj.utilcode.util.ActivityUtils
;
import
com.blankj.utilcode.util.PermissionUtils
;
import
com.blankj.utilcode.util.PermissionUtils.OnRationaleListener.ShouldRequest
;
...
...
utilcode/README-CN.md
浏览文件 @
e265d786
...
...
@@ -2,7 +2,7 @@
Gradle:
```
groovy
implementation
'com.blankj:utilcode:1.22.
1
'
implementation
'com.blankj:utilcode:1.22.
2
'
```
...
...
utilcode/README-STATIC-BUS.md
浏览文件 @
e265d786
...
...
@@ -27,7 +27,7 @@ apply plugin: "com.blankj.bus"
给 base 模块添加
[
AndroidUtilCode
](
https://github.com/Blankj/AndroidUtilCode
)
依赖:
```
groovy
api
"com.blankj:utilcode:1.22.
1
"
api
"com.blankj:utilcode:1.22.
2
"
```
比如 module0 中存在的
`Module0Activity.java`
,我们通常都是在它内部写一个
`start`
函数来启动它,现在我们给它添加
`@BusUtils.Subscribe`
注解,并给注解的
`name`
赋唯一值,要注意,函数务必要
`public static`
哦:
...
...
utilcode/README.md
浏览文件 @
e265d786
...
...
@@ -2,7 +2,7 @@
Gradle:
```
groovy
implementation
'com.blankj:utilcode:1.22.
1
'
implementation
'com.blankj:utilcode:1.22.
2
'
```
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
浏览文件 @
e265d786
...
...
@@ -49,7 +49,7 @@ public final class AppUtils {
*/
public
static
void
registerAppStatusChangedListener
(
@NonNull
final
Object
obj
,
@NonNull
final
Utils
.
OnAppStatusChangedListener
listener
)
{
Utils
.
getActivityLifecycle
().
addListener
(
obj
,
listener
);
Utils
.
getActivityLifecycle
().
add
OnAppStatusChanged
Listener
(
obj
,
listener
);
}
/**
...
...
@@ -58,7 +58,7 @@ public final class AppUtils {
* @param obj The object.
*/
public
static
void
unregisterAppStatusChangedListener
(
@NonNull
final
Object
obj
)
{
Utils
.
getActivityLifecycle
().
removeListener
(
obj
);
Utils
.
getActivityLifecycle
().
remove
OnAppStatusChanged
Listener
(
obj
);
}
/**
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
浏览文件 @
e265d786
...
...
@@ -251,7 +251,7 @@ public final class ToastUtils {
@Override
public
void
run
()
{
cancel
();
iToast
=
ToastFactory
.
makeToast
(
Utils
.
get
TopActivityOr
App
(),
text
,
duration
);
iToast
=
ToastFactory
.
makeToast
(
Utils
.
getApp
(),
text
,
duration
);
final
TextView
tvMessage
=
iToast
.
getView
().
findViewById
(
android
.
R
.
id
.
message
);
if
(
sMsgColor
!=
COLOR_DEFAULT
)
{
tvMessage
.
setTextColor
(
sMsgColor
);
...
...
@@ -416,11 +416,18 @@ public final class ToastUtils {
static
class
ToastWithoutNotification
extends
AbsToast
{
private
WindowManager
mWM
;
private
View
mView
;
private
View
mView
;
private
WindowManager
.
LayoutParams
mParams
=
new
WindowManager
.
LayoutParams
();
private
Utils
.
OnActivityDestroyedListener
listener
=
new
Utils
.
OnActivityDestroyedListener
()
{
@Override
public
void
onActivityDestroyed
(
Activity
activity
)
{
cancel
();
}
};
ToastWithoutNotification
(
Toast
toast
)
{
super
(
toast
);
}
...
...
@@ -437,20 +444,12 @@ public final class ToastUtils {
}
else
{
Context
topActivityOrApp
=
Utils
.
getTopActivityOrApp
();
if
(
topActivityOrApp
instanceof
Activity
)
{
mWM
=
((
Activity
)
topActivityOrApp
).
getWindowManager
();
Activity
topActivity
=
(
Activity
)
topActivityOrApp
;
mWM
=
topActivity
.
getWindowManager
();
Utils
.
getActivityLifecycle
().
addOnActivityDestroyedListener
(
topActivity
,
listener
);
}
mParams
.
type
=
WindowManager
.
LayoutParams
.
TYPE_APPLICATION_PANEL
;
mParams
.
y
=
mToast
.
getYOffset
()
+
getNavBarHeight
();
if
(
Utils
.
getActivityLifecycle
().
getOnActivityDestroyedListener
()
==
null
)
{
Utils
.
getActivityLifecycle
().
setOnActivityDestroyedListener
(
new
Utils
.
OnActivityDestroyedListener
()
{
@Override
public
void
onActivityDestroyed
(
Activity
activity
)
{
cancel
();
}
}
);
}
}
final
Configuration
config
=
context
.
getResources
().
getConfiguration
();
...
...
@@ -496,7 +495,7 @@ public final class ToastUtils {
public
void
cancel
()
{
try
{
if
(
mWM
!=
null
)
{
mWM
.
removeView
(
mView
);
mWM
.
removeView
Immediate
(
mView
);
}
}
catch
(
Exception
ignored
)
{
/**/
}
mView
=
null
;
...
...
utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
浏览文件 @
e265d786
...
...
@@ -11,9 +11,11 @@ import android.os.Bundle;
import
java.lang.reflect.Field
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
* <pre>
...
...
@@ -157,28 +159,12 @@ public final class Utils {
final
LinkedList
<
Activity
>
mActivityList
=
new
LinkedList
<>();
final
HashMap
<
Object
,
OnAppStatusChangedListener
>
mStatusListenerMap
=
new
HashMap
<>();
private
OnActivityDestroyedListener
mOnActivityDestroyedListener
;
final
HashMap
<
Activity
,
Set
<
OnActivityDestroyedListener
>>
mDestroyedListenerMap
=
new
HashMap
<>()
;
private
int
mForegroundCount
=
0
;
private
int
mConfigCount
=
0
;
private
boolean
mIsBackground
=
false
;
OnActivityDestroyedListener
getOnActivityDestroyedListener
()
{
return
mOnActivityDestroyedListener
;
}
void
setOnActivityDestroyedListener
(
OnActivityDestroyedListener
onActivityDestroyedListener
)
{
mOnActivityDestroyedListener
=
onActivityDestroyedListener
;
}
void
addListener
(
final
Object
object
,
final
OnAppStatusChangedListener
listener
)
{
mStatusListenerMap
.
put
(
object
,
listener
);
}
void
removeListener
(
final
Object
object
)
{
mStatusListenerMap
.
remove
(
object
);
}
@Override
public
void
onActivityCreated
(
Activity
activity
,
Bundle
savedInstanceState
)
{
setTopActivity
(
activity
);
...
...
@@ -229,9 +215,49 @@ public final class Utils {
@Override
public
void
onActivityDestroyed
(
Activity
activity
)
{
mActivityList
.
remove
(
activity
);
if
(
mOnActivityDestroyedListener
!=
null
)
{
mOnActivityDestroyedListener
.
onActivityDestroyed
(
activity
);
consumeOnActivityDestroyedListener
(
activity
);
}
Activity
getTopActivity
()
{
if
(!
mActivityList
.
isEmpty
())
{
final
Activity
topActivity
=
mActivityList
.
getLast
();
if
(
topActivity
!=
null
)
{
return
topActivity
;
}
}
Activity
topActivityByReflect
=
getTopActivityByReflect
();
if
(
topActivityByReflect
!=
null
)
{
setTopActivity
(
topActivityByReflect
);
}
return
topActivityByReflect
;
}
void
addOnAppStatusChangedListener
(
final
Object
object
,
final
OnAppStatusChangedListener
listener
)
{
mStatusListenerMap
.
put
(
object
,
listener
);
}
void
removeOnAppStatusChangedListener
(
final
Object
object
)
{
mStatusListenerMap
.
remove
(
object
);
}
void
removeOnActivityDestroyedListener
(
final
Activity
activity
)
{
if
(
activity
==
null
)
return
;
mDestroyedListenerMap
.
remove
(
activity
);
}
void
addOnActivityDestroyedListener
(
final
Activity
activity
,
final
OnActivityDestroyedListener
listener
)
{
if
(
activity
==
null
||
listener
==
null
)
return
;
Set
<
OnActivityDestroyedListener
>
listeners
;
if
(!
mDestroyedListenerMap
.
containsKey
(
activity
))
{
listeners
=
new
HashSet
<>();
mDestroyedListenerMap
.
put
(
activity
,
listeners
);
}
else
{
listeners
=
mDestroyedListenerMap
.
get
(
activity
);
if
(
listeners
.
contains
(
listener
))
return
;
}
listeners
.
add
(
listener
);
}
private
void
postStatus
(
final
boolean
isForeground
)
{
...
...
@@ -258,18 +284,17 @@ public final class Utils {
}
}
Activity
getTopActivity
()
{
if
(!
mActivityList
.
isEmpty
())
{
final
Activity
topActivity
=
mActivityList
.
getLast
();
if
(
topActivity
!=
null
)
{
return
topActivity
;
private
void
consumeOnActivityDestroyedListener
(
Activity
activity
)
{
Set
<
Map
.
Entry
<
Activity
,
Set
<
OnActivityDestroyedListener
>>>
entries
=
mDestroyedListenerMap
.
entrySet
();
for
(
Map
.
Entry
<
Activity
,
Set
<
OnActivityDestroyedListener
>>
entry
:
entries
)
{
if
(
entry
.
getKey
()
==
activity
)
{
Set
<
OnActivityDestroyedListener
>
value
=
entry
.
getValue
();
for
(
OnActivityDestroyedListener
listener
:
value
)
{
listener
.
onActivityDestroyed
(
activity
);
}
removeOnActivityDestroyedListener
(
activity
);
}
}
Activity
topActivityByReflect
=
getTopActivityByReflect
();
if
(
topActivityByReflect
!=
null
)
{
setTopActivity
(
topActivityByReflect
);
}
return
topActivityByReflect
;
}
private
Activity
getTopActivityByReflect
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录