Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mmm-rain
AndroidUtilCode
提交
46052774
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 搜索 >>
提交
46052774
编写于
4月 08, 2020
作者:
B
Blankj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
see 04/08 log
上级
35de0c4d
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
159 addition
and
76 deletion
+159
-76
CHANGELOG.md
CHANGELOG.md
+2
-0
buildSrc/src/main/groovy/Config.groovy
buildSrc/src/main/groovy/Config.groovy
+1
-1
buildSrc/src/main/java/com/blankj/plugin/readme/ReadmeCorePlugin.groovy
...ain/java/com/blankj/plugin/readme/ReadmeCorePlugin.groovy
+6
-2
feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
.../java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
+12
-0
feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java
...in/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java
+1
-1
feature/utilcode/pkg/src/main/res/values/strings.xml
feature/utilcode/pkg/src/main/res/values/strings.xml
+1
-0
lib/base/src/main/java/com/blankj/base/BaseApplication.java
lib/base/src/main/java/com/blankj/base/BaseApplication.java
+1
-1
lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java
...base/src/main/java/com/blankj/base/mvp/BasePresenter.java
+16
-14
lib/base/src/main/java/com/blankj/base/mvp/BaseView.java
lib/base/src/main/java/com/blankj/base/mvp/BaseView.java
+5
-6
lib/utilcode/README-CN.md
lib/utilcode/README-CN.md
+9
-2
lib/utilcode/README.md
lib/utilcode/README.md
+9
-2
lib/utilcode/build.gradle
lib/utilcode/build.gradle
+4
-4
lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java
...de/src/main/java/com/blankj/utilcode/util/CrashUtils.java
+12
-6
lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java
...code/src/main/java/com/blankj/utilcode/util/LogUtils.java
+9
-9
lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java
...tilcode/src/main/java/com/blankj/utilcode/util/Utils.java
+4
-6
lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java
.../com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java
+25
-0
lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java
...e/src/main/java/com/blankj/utilcode/util/UtilsBridge.java
+7
-8
lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java
...ain/java/com/blankj/utilcode/util/UtilsTransActivity.java
+31
-14
lib/utildebug/build.gradle
lib/utildebug/build.gradle
+4
-0
未找到文件。
CHANGELOG.md
浏览文件 @
46052774
*
`20/04/08`
[fix] CrashUtils DefaultUncaughtExceptionHandler is wrong; LogUtils write file failed. Publish v1.27.3.
*
`20/04/07`
[mdf] GsonUtils#getGson() method public.
*
`20/04/04`
[fix] ShadowUtils bug running on lower version devices. Publish v1.27.2.
*
`20/04/03`
[fix] UtilsActivityLifecycleImpl#HashMap#remove IllegalStateException bug.
*
`20/04/02`
[fix] PathUtils sdcard enable state is wrong; ActivityUtils finish activity wrong; Publish v1.27.1.
...
...
buildSrc/src/main/groovy/Config.groovy
浏览文件 @
46052774
...
...
@@ -15,7 +15,7 @@ class Config {
static
minSdkVersion
=
14
static
targetSdkVersion
=
29
static
versionCode
=
1
_026_001
static
versionName
=
'1.27.
2
'
// E.g. 1.9.72 => 1,009,072
static
versionName
=
'1.27.
3
'
// E.g. 1.9.72 => 1,009,072
// lib version
static
gradlePluginVersion
=
'3.5.0'
...
...
buildSrc/src/main/java/com/blankj/plugin/readme/ReadmeCorePlugin.groovy
浏览文件 @
46052774
...
...
@@ -30,8 +30,12 @@ class ReadmeCorePlugin implements Plugin<Project> {
def
sb
=
new
StringBuilder
()
readmeCN
.
eachLine
{
line
->
if
(
line
.
contains
(
"* ###"
))
{
String
utilsName
=
line
.
substring
(
line
.
indexOf
(
"["
)
+
1
,
line
.
indexOf
(
"Utils"
))
sb
.
append
(
"* ### About "
).
append
(
utilsName
).
append
(
line
.
substring
(
line
.
indexOf
(
" -> "
)))
if
(
line
.
contains
(
"UtilsTransActivity"
))
{
sb
.
append
(
line
)
}
else
{
String
utilsName
=
line
.
substring
(
line
.
indexOf
(
"["
)
+
1
,
line
.
indexOf
(
"Utils"
))
sb
.
append
(
"* ### About "
).
append
(
utilsName
).
append
(
line
.
substring
(
line
.
indexOf
(
" -> "
)))
}
}
else
if
(
line
.
contains
(
": "
)
&&
!
line
.
contains
(
"["
))
{
sb
.
append
(
line
.
substring
(
0
,
line
.
indexOf
(
':'
)).
trim
())
}
else
if
(
line
.
contains
(
"打个小广告"
)
||
line
.
contains
(
"知识星球"
)
||
line
.
contains
(
"我的二维码"
))
{
...
...
feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
浏览文件 @
46052774
...
...
@@ -2,6 +2,8 @@ package com.blankj.utilcode.pkg.feature
import
android.content.Context
import
android.content.Intent
import
android.os.Bundle
import
android.widget.TextView
import
com.blankj.common.activity.CommonActivity
import
com.blankj.common.item.CommonItem
import
com.blankj.common.item.CommonItemClick
...
...
@@ -43,6 +45,7 @@ import com.blankj.utilcode.pkg.feature.span.SpanActivity
import
com.blankj.utilcode.pkg.feature.toast.ToastActivity
import
com.blankj.utilcode.pkg.feature.vibrate.VibrateActivity
import
com.blankj.utilcode.util.CollectionUtils
import
com.blankj.utilcode.util.UtilsTransActivity
/**
* ```
...
...
@@ -175,6 +178,15 @@ class CoreUtilActivity : CommonActivity() {
CommonItemClick
(
R
.
string
.
demo_toast
,
true
)
{
ToastActivity
.
start
(
this
)
},
CommonItemClick
(
R
.
string
.
demo_trans_activity
,
true
)
{
UtilsTransActivity
.
start
(
this
,
object
:
UtilsTransActivity
.
TransActivityDelegate
()
{
override
fun
onCreated
(
activity
:
UtilsTransActivity
,
savedInstanceState
:
Bundle
?)
{
super
.
onCreated
(
activity
,
savedInstanceState
)
activity
.
setContentView
(
R
.
layout
.
common_dialog_loading
)
activity
.
findViewById
<
TextView
>(
R
.
id
.
utilActionLoadingMsgTv
).
text
=
"Trans Activity is showing..."
}
})
},
CommonItemClick
(
R
.
string
.
demo_vibrate
,
true
)
{
VibrateActivity
.
start
(
this
)
}
...
...
feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java
浏览文件 @
46052774
...
...
@@ -31,7 +31,7 @@ public class MvpModel extends BaseModel implements IMvp.Model {
ThreadUtils
.
executeByCached
(
addAutoDestroyTask
(
new
ThreadUtils
.
SimpleTask
<
String
>()
{
@Override
public
String
doInBackground
()
throws
Throwable
{
Thread
.
sleep
(
1
000
);
Thread
.
sleep
(
2
000
);
return
"msg: "
+
index
++;
}
...
...
feature/utilcode/pkg/src/main/res/values/strings.xml
浏览文件 @
46052774
...
...
@@ -37,6 +37,7 @@
<string
name=
"demo_spStatic"
>
SPStaticUtils Demo
</string>
<string
name=
"demo_span"
>
SpanUtils Demo
</string>
<string
name=
"demo_toast"
>
ToastUtils Demo
</string>
<string
name=
"demo_trans_activity"
>
TransActivity Demo
</string>
<string
name=
"demo_vibrate"
>
VibrateUtils Demo
</string>
<!--Activity 相关-->
...
...
lib/base/src/main/java/com/blankj/base/BaseApplication.java
浏览文件 @
46052774
...
...
@@ -83,7 +83,7 @@ public class BaseApplication extends Application {
@Override
public
void
onCrash
(
String
crashInfo
,
Throwable
e
)
{
LogUtils
.
e
(
crashInfo
);
AppUtils
.
relaunchApp
(
true
);
AppUtils
.
relaunchApp
();
}
});
}
...
...
lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java
浏览文件 @
46052774
package
com.blankj.base.mvp
;
import
android.app.Activity
;
import
android.arch.lifecycle.Lifecycle
;
import
android.arch.lifecycle.LifecycleObserver
;
import
android.arch.lifecycle.LifecycleOwner
;
import
android.arch.lifecycle.OnLifecycleEvent
;
import
android.support.annotation.CallSuper
;
import
android.support.annotation.NonNull
;
import
com.blankj.utilcode.util.ActivityUtils
;
import
com.blankj.utilcode.util.LogUtils
;
import
com.blankj.utilcode.util.Utils
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -19,7 +19,7 @@ import java.util.Map;
* desc :
* </pre>
*/
public
abstract
class
BasePresenter
<
V
extends
BaseView
>
implements
LifecycleObserver
{
public
abstract
class
BasePresenter
<
V
extends
BaseView
>
extends
Utils
.
ActivityLifecycleCallbacks
{
private
V
mView
;
private
Map
<
Class
,
BaseModel
>
mModelMap
=
new
HashMap
<>();
...
...
@@ -29,6 +29,7 @@ public abstract class BasePresenter<V extends BaseView> implements LifecycleObse
void
bindView
(
V
view
)
{
this
.
mView
=
view
;
onAttachView
();
ActivityUtils
.
addActivityLifecycleCallbacks
(
mView
.
getActivity
(),
this
);
}
public
V
getView
()
{
...
...
@@ -54,9 +55,16 @@ public abstract class BasePresenter<V extends BaseView> implements LifecycleObse
return
null
;
}
@CallSuper
@OnLifecycleEvent
(
Lifecycle
.
Event
.
ON_DESTROY
)
public
void
onDestroyPresenter
()
{
@Override
public
void
onLifecycleChanged
(
@NonNull
Activity
activity
,
Lifecycle
.
Event
event
)
{
super
.
onLifecycleChanged
(
activity
,
event
);
if
(
event
==
Lifecycle
.
Event
.
ON_DESTROY
)
{
destroyPresenter
();
}
LogUtils
.
i
(
"onLifecycleChanged: "
+
event
);
}
private
void
destroyPresenter
()
{
if
(
mView
!=
null
)
{
mView
.
mPresenterMap
.
remove
(
this
.
getClass
());
mView
.
onDestroyView
();
...
...
@@ -67,11 +75,5 @@ public abstract class BasePresenter<V extends BaseView> implements LifecycleObse
}
}
mModelMap
.
clear
();
LogUtils
.
i
(
"onDestroyPresenter"
);
}
@OnLifecycleEvent
(
Lifecycle
.
Event
.
ON_ANY
)
public
void
onLifecycleChanged
(
LifecycleOwner
owner
,
Lifecycle
.
Event
event
)
{
LogUtils
.
i
(
event
.
toString
());
}
}
lib/base/src/main/java/com/blankj/base/mvp/BaseView.java
浏览文件 @
46052774
package
com.blankj.base.mvp
;
import
android.app.Activity
;
import
android.arch.lifecycle.Lifecycle
;
import
android.support.annotation.NonNull
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.app.FragmentActivity
;
import
com.blankj.utilcode.util.ActivityUtils
;
import
com.blankj.utilcode.util.Utils
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -19,20 +24,17 @@ public abstract class BaseView<V extends BaseView> {
private
FragmentActivity
mActivity
;
private
Fragment
mFragment
;
private
Lifecycle
mLifecycle
;
Map
<
Class
,
BasePresenter
<
V
>>
mPresenterMap
=
new
HashMap
<>();
public
abstract
void
onDestroyView
();
public
BaseView
(
FragmentActivity
activity
)
{
mActivity
=
activity
;
mLifecycle
=
activity
.
getLifecycle
();
}
public
BaseView
(
Fragment
fragment
)
{
mFragment
=
fragment
;
mActivity
=
fragment
.
getActivity
();
mLifecycle
=
fragment
.
getLifecycle
();
}
public
<
T
extends
FragmentActivity
>
T
getActivity
()
{
...
...
@@ -49,9 +51,6 @@ public abstract class BaseView<V extends BaseView> {
mPresenterMap
.
put
(
presenter
.
getClass
(),
presenter
);
//noinspection unchecked
presenter
.
bindView
((
V
)
this
);
if
(
mLifecycle
!=
null
)
{
mLifecycle
.
addObserver
(
presenter
);
}
}
public
<
P
extends
BasePresenter
<
V
>>
P
getPresenter
(
Class
<
P
>
presenterClass
)
{
...
...
lib/utilcode/README-CN.md
浏览文件 @
46052774
...
...
@@ -2,10 +2,10 @@
Gradle:
```
groovy
implementation
'com.blankj:utilcode:1.27.
2
'
implementation
'com.blankj:utilcode:1.27.
3
'
// if u use AndroidX, use the following
implementation
'com.blankj:utilcodex:1.27.
2
'
implementation
'com.blankj:utilcodex:1.27.
3
'
```
...
...
@@ -1143,6 +1143,11 @@ file2Uri: file 转 uri
uri2File: uri 转 file
```
*
### UtilsTransActivity ->
[
UtilsTransActivity.java
][
trans.java
]
```
start: 启动透明 Activity
```
*
### 震动相关 ->
[
VibrateUtils.java
][
vibrate.java
]
->
[
Demo
][
vibrate.demo
]
```
vibrate: 震动
...
...
@@ -1365,6 +1370,8 @@ getComments : 获取压缩文件中的注释链表
[
uri.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java
[
trans.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java
[
vibrate.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
[
vibrate.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt
...
...
lib/utilcode/README.md
浏览文件 @
46052774
...
...
@@ -2,10 +2,10 @@
Gradle:
```
groovy
implementation
'com.blankj:utilcode:1.27.
2
'
implementation
'com.blankj:utilcode:1.27.
3
'
// if u use AndroidX, use the following
implementation
'com.blankj:utilcodex:1.27.
2
'
implementation
'com.blankj:utilcodex:1.27.
3
'
```
...
...
@@ -1143,6 +1143,11 @@ file2Uri
uri2File
```
*
### UtilsTransActivity ->
[
UtilsTransActivity.java
][
trans.java
]
```
start
```
*
### About Vibrate ->
[
VibrateUtils.java
][
vibrate.java
]
->
[
Demo
][
vibrate.demo
]
```
vibrate
...
...
@@ -1362,6 +1367,8 @@ getComments
[
uri.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java
[
trans.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java
[
vibrate.java
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
[
vibrate.demo
]:
https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt
...
...
lib/utilcode/build.gradle
浏览文件 @
46052774
...
...
@@ -40,6 +40,10 @@ dependencies {
testImplementation
Config
.
depConfig
.
eventbus_lib
.
dep
}
afterEvaluate
{
verifyReleaseResources
.
enabled
(
false
)
}
apply
from:
"${rootDir.path}/gradle/publish.gradle"
publish
{
name
=
"UtilCode"
...
...
@@ -47,8 +51,4 @@ publish {
artifactId
=
Config
.
depConfig
.
lib_utilcode
.
artifactId
version
=
Config
.
depConfig
.
lib_utilcode
.
version
website
=
"https://github.com/Blankj/AndroidUtilCode"
}
afterEvaluate
{
verifyReleaseResources
.
enabled
(
false
)
}
\ No newline at end of file
lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java
浏览文件 @
46052774
...
...
@@ -21,6 +21,8 @@ public final class CrashUtils {
private
static
final
String
FILE_SEP
=
System
.
getProperty
(
"file.separator"
);
private
static
final
UncaughtExceptionHandler
DEFAULT_UNCAUGHT_EXCEPTION_HANDLER
=
Thread
.
getDefaultUncaughtExceptionHandler
();
private
CrashUtils
()
{
throw
new
UnsupportedOperationException
(
"u can't instantiate me..."
);
}
...
...
@@ -79,7 +81,12 @@ public final class CrashUtils {
public
static
void
init
(
final
String
crashDirPath
,
final
OnCrashListener
onCrashListener
)
{
String
dirPath
;
if
(
UtilsBridge
.
isSpace
(
crashDirPath
))
{
dirPath
=
Utils
.
getApp
().
getFilesDir
()
+
FILE_SEP
+
"crash"
+
FILE_SEP
;
if
(
UtilsBridge
.
isSDCardEnableByEnvironment
()
&&
Utils
.
getApp
().
getExternalFilesDir
(
null
)
!=
null
)
dirPath
=
Utils
.
getApp
().
getExternalFilesDir
(
null
)
+
FILE_SEP
+
"crash"
+
FILE_SEP
;
else
{
dirPath
=
Utils
.
getApp
().
getFilesDir
()
+
FILE_SEP
+
"crash"
+
FILE_SEP
;
}
}
else
{
dirPath
=
crashDirPath
.
endsWith
(
FILE_SEP
)
?
crashDirPath
:
crashDirPath
+
FILE_SEP
;
}
...
...
@@ -91,7 +98,7 @@ public final class CrashUtils {
return
new
UncaughtExceptionHandler
()
{
@Override
public
void
uncaughtException
(
@NonNull
final
Thread
t
,
@NonNull
final
Throwable
e
)
{
final
String
time
=
new
SimpleDateFormat
(
"
MM-dd_HH-mm-
ss"
).
format
(
new
Date
());
final
String
time
=
new
SimpleDateFormat
(
"
yyyy_MM_dd-HH_mm_
ss"
).
format
(
new
Date
());
final
StringBuilder
sb
=
new
StringBuilder
();
final
String
head
=
"************* Log Head ****************"
+
"\nTime Of Crash : "
+
time
+
...
...
@@ -105,15 +112,14 @@ public final class CrashUtils {
sb
.
append
(
head
).
append
(
UtilsBridge
.
getFullStackTrace
(
e
));
final
String
crashInfo
=
sb
.
toString
();
final
String
crashFile
=
dirPath
+
time
+
".txt"
;
UtilsBridge
.
writeFileFromString
(
crashFile
,
crashInfo
);
UtilsBridge
.
writeFileFromString
(
crashFile
,
crashInfo
,
true
);
if
(
onCrashListener
!=
null
)
{
onCrashListener
.
onCrash
(
crashInfo
,
e
);
}
UncaughtExceptionHandler
handler
=
Thread
.
getDefaultUncaughtExceptionHandler
();
if
(
handler
!=
null
)
{
handler
.
uncaughtException
(
t
,
e
);
if
(
DEFAULT_UNCAUGHT_EXCEPTION_HANDLER
!=
null
)
{
DEFAULT_UNCAUGHT_EXCEPTION_HANDLER
.
uncaughtException
(
t
,
e
);
}
}
};
...
...
lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java
浏览文件 @
46052774
...
...
@@ -593,7 +593,7 @@ public final class LogUtils {
private
static
void
input2File
(
final
String
filePath
,
final
String
input
)
{
if
(
CONFIG
.
mFileWriter
==
null
)
{
UtilsBridge
.
writeFileFromString
(
filePath
,
input
);
UtilsBridge
.
writeFileFromString
(
filePath
,
input
,
true
);
}
else
{
CONFIG
.
mFileWriter
.
write
(
filePath
,
input
);
}
...
...
@@ -621,13 +621,12 @@ public final class LogUtils {
private
IFileWriter
mFileWriter
;
private
Config
()
{
mDefaultDir
=
Utils
.
getApp
().
getFilesDir
()
+
FILE_SEP
+
"log"
+
FILE_SEP
;
mFileWriter
=
new
IFileWriter
()
{
@Override
public
void
write
(
String
file
,
String
content
)
{
}
};
if
(
UtilsBridge
.
isSDCardEnableByEnvironment
()
&&
Utils
.
getApp
().
getExternalFilesDir
(
null
)
!=
null
)
mDefaultDir
=
Utils
.
getApp
().
getExternalFilesDir
(
null
)
+
FILE_SEP
+
"log"
+
FILE_SEP
;
else
{
mDefaultDir
=
Utils
.
getApp
().
getFilesDir
()
+
FILE_SEP
+
"log"
+
FILE_SEP
;
}
}
public
final
Config
setLogSwitch
(
final
boolean
logSwitch
)
{
...
...
@@ -863,7 +862,8 @@ public final class LogUtils {
static
String
object2String
(
Object
object
,
int
type
)
{
if
(
object
.
getClass
().
isArray
())
return
array2String
(
object
);
if
(
object
instanceof
Throwable
)
return
UtilsBridge
.
getFullStackTrace
((
Throwable
)
object
);
if
(
object
instanceof
Throwable
)
return
UtilsBridge
.
getFullStackTrace
((
Throwable
)
object
);
if
(
object
instanceof
Bundle
)
return
bundle2String
((
Bundle
)
object
);
if
(
object
instanceof
Intent
)
return
intent2String
((
Intent
)
object
);
if
(
type
==
JSON
)
{
...
...
lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java
浏览文件 @
46052774
...
...
@@ -53,14 +53,16 @@ public final class Utils {
*/
public
static
Application
getApp
()
{
if
(
sApp
!=
null
)
return
sApp
;
throw
new
NullPointerException
(
"UtilsFileProvider load failed."
);
sApp
=
UtilsBridge
.
getApplicationByReflect
();
if
(
sApp
!=
null
)
return
sApp
;
throw
new
NullPointerException
(
"UtilsFileProvider load failed && reflect failed."
);
}
///////////////////////////////////////////////////////////////////////////
// interface
///////////////////////////////////////////////////////////////////////////
public
abstract
static
class
Task
<
Result
>
extends
UtilsBridge
.
Task
<
Result
>
{
public
abstract
static
class
Task
<
Result
>
extends
ThreadUtils
.
Simple
Task
<
Result
>
{
private
Consumer
<
Result
>
mConsumer
;
...
...
@@ -99,10 +101,6 @@ public final class Utils {
public
void
onLifecycleChanged
(
@NonNull
Activity
activity
,
Lifecycle
.
Event
event
)
{
/**/
}
}
public
interface
OnActivityDestroyedListener
{
void
onActivityDestroyed
(
Activity
activity
);
}
public
interface
Consumer
<
T
>
{
void
accept
(
T
t
);
}
...
...
lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java
浏览文件 @
46052774
...
...
@@ -12,6 +12,7 @@ import android.view.Window;
import
android.view.WindowManager
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
...
...
@@ -83,6 +84,27 @@ final class UtilsActivityLifecycleImpl implements Application.ActivityLifecycleC
});
}
Application
getApplicationByReflect
()
{
try
{
Class
activityThreadClass
=
Class
.
forName
(
"android.app.ActivityThread"
);
Object
thread
=
getActivityThread
();
Object
app
=
activityThreadClass
.
getMethod
(
"getApplication"
).
invoke
(
thread
);
if
(
app
==
null
)
{
return
null
;
}
return
(
Application
)
app
;
}
catch
(
InvocationTargetException
e
)
{
e
.
printStackTrace
();
}
catch
(
NoSuchMethodException
e
)
{
e
.
printStackTrace
();
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
private
void
addActivityLifecycleCallbacksInner
(
final
Activity
activity
,
final
Utils
.
ActivityLifecycleCallbacks
lifecycleCallbacks
)
{
List
<
Utils
.
ActivityLifecycleCallbacks
>
callbacks
=
mActivityLifecycleCallbacksMap
.
get
(
activity
);
...
...
@@ -265,6 +287,9 @@ final class UtilsActivityLifecycleImpl implements Application.ActivityLifecycleC
}
}
/**
* @return the activities which topActivity is first position
*/
private
List
<
Activity
>
getActivitiesByReflect
()
{
LinkedList
<
Activity
>
list
=
new
LinkedList
<>();
Activity
topActivity
=
null
;
...
...
lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java
浏览文件 @
46052774
package
com.blankj.utilcode.util
;
import
android.app.Activity
;
import
android.app.Application
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.graphics.Bitmap
;
...
...
@@ -72,6 +73,10 @@ class UtilsBridge {
return
UtilsActivityLifecycleImpl
.
INSTANCE
.
getActivityList
();
}
static
Application
getApplicationByReflect
()
{
return
UtilsActivityLifecycleImpl
.
INSTANCE
.
getApplicationByReflect
();
}
///////////////////////////////////////////////////////////////////////////
// ActivityUtils
///////////////////////////////////////////////////////////////////////////
...
...
@@ -236,8 +241,8 @@ class UtilsBridge {
return
FileIOUtils
.
readFile2BytesByChannel
(
file
);
}
static
boolean
writeFileFromString
(
final
String
filePath
,
final
String
content
)
{
return
FileIOUtils
.
writeFileFromString
(
filePath
,
content
);
static
boolean
writeFileFromString
(
final
String
filePath
,
final
String
content
,
final
boolean
append
)
{
return
FileIOUtils
.
writeFileFromString
(
filePath
,
content
,
append
);
}
static
boolean
writeFileFromIS
(
final
String
filePath
,
final
InputStream
is
)
{
...
...
@@ -506,10 +511,4 @@ class UtilsBridge {
static
Uri
file2Uri
(
final
File
file
)
{
return
UriUtils
.
file2Uri
(
file
);
}
///////////////////////////////////////////////////////////////////////////
// class
///////////////////////////////////////////////////////////////////////////
static
abstract
class
Task
<
T
>
extends
ThreadUtils
.
SimpleTask
<
T
>
{
}
}
lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java
浏览文件 @
46052774
package
com.blankj.utilcode.util
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.support.v7.app.AppCompatActivity
;
import
android.view.MotionEvent
;
...
...
@@ -23,18 +25,33 @@ public class UtilsTransActivity extends AppCompatActivity {
private
static
TransActivityDelegate
sDelegate
;
public
static
void
start
(
final
TransActivityDelegate
delegate
)
{
start
(
null
,
delegate
);
start
(
null
,
null
,
delegate
);
}
public
static
void
start
(
final
Utils
.
Consumer
<
Intent
>
consumer
,
final
TransActivityDelegate
delegate
)
{
start
(
null
,
consumer
,
delegate
);
}
public
static
void
start
(
final
Activity
activity
,
final
TransActivityDelegate
delegate
)
{
start
(
activity
,
null
,
delegate
);
}
public
static
void
start
(
final
Activity
activity
,
final
Utils
.
Consumer
<
Intent
>
consumer
,
final
TransActivityDelegate
delegate
)
{
if
(
delegate
==
null
)
return
;
Intent
starter
=
new
Intent
(
Utils
.
getApp
(),
UtilsTransActivity
.
class
);
starter
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
if
(
consumer
!=
null
)
{
consumer
.
accept
(
starter
);
}
Utils
.
getApp
().
startActivity
(
starter
);
if
(
activity
==
null
)
{
starter
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
Utils
.
getApp
().
startActivity
(
starter
);
}
else
{
activity
.
startActivity
(
starter
);
}
sDelegate
=
delegate
;
}
...
...
@@ -130,27 +147,27 @@ public class UtilsTransActivity extends AppCompatActivity {
}
public
abstract
static
class
TransActivityDelegate
{
public
void
onCreateBefore
(
UtilsTransActivity
activity
,
@Nullable
Bundle
savedInstanceState
)
{
/**/
}
public
void
onCreateBefore
(
@NonNull
UtilsTransActivity
activity
,
@Nullable
Bundle
savedInstanceState
)
{
/**/
}
public
void
onCreated
(
UtilsTransActivity
activity
,
@Nullable
Bundle
savedInstanceState
)
{
/**/
}
public
void
onCreated
(
@NonNull
UtilsTransActivity
activity
,
@Nullable
Bundle
savedInstanceState
)
{
/**/
}
public
void
onStarted
(
UtilsTransActivity
activity
)
{
/**/
}
public
void
onStarted
(
@NonNull
UtilsTransActivity
activity
)
{
/**/
}
public
void
onDestroy
(
UtilsTransActivity
activity
)
{
/**/
}
public
void
onDestroy
(
@NonNull
UtilsTransActivity
activity
)
{
/**/
}
public
void
onResumed
(
UtilsTransActivity
activity
)
{
/**/
}
public
void
onResumed
(
@NonNull
UtilsTransActivity
activity
)
{
/**/
}
public
void
onPaused
(
UtilsTransActivity
activity
)
{
/**/
}
public
void
onPaused
(
@NonNull
UtilsTransActivity
activity
)
{
/**/
}
public
void
onStopped
(
UtilsTransActivity
activity
)
{
/**/
}
public
void
onStopped
(
@NonNull
UtilsTransActivity
activity
)
{
/**/
}
public
void
onSaveInstanceState
(
UtilsTransActivity
activity
,
Bundle
outState
)
{
/**/
}
public
void
onSaveInstanceState
(
@NonNull
UtilsTransActivity
activity
,
Bundle
outState
)
{
/**/
}
public
void
onRequestPermissionsResult
(
UtilsTransActivity
activity
,
int
requestCode
,
String
[]
permissions
,
int
[]
grantResults
)
{
/**/
}
public
void
onRequestPermissionsResult
(
@NonNull
UtilsTransActivity
activity
,
int
requestCode
,
String
[]
permissions
,
int
[]
grantResults
)
{
/**/
}
public
void
onActivityResult
(
UtilsTransActivity
activity
,
int
requestCode
,
int
resultCode
,
Intent
data
)
{
/**/
}
public
void
onActivityResult
(
@NonNull
UtilsTransActivity
activity
,
int
requestCode
,
int
resultCode
,
Intent
data
)
{
/**/
}
public
boolean
dispatchTouchEvent
(
UtilsTransActivity
activity
,
MotionEvent
ev
)
{
public
boolean
dispatchTouchEvent
(
@NonNull
UtilsTransActivity
activity
,
MotionEvent
ev
)
{
return
false
;
}
}
...
...
lib/utildebug/build.gradle
浏览文件 @
46052774
...
...
@@ -8,4 +8,8 @@ dependencies {
testImplementation
Config
.
depConfig
.
test_junit
.
dep
testImplementation
Config
.
depConfig
.
test_robolectric
.
dep
testImplementation
Config
.
depConfig
.
support_appcompat_v7
.
dep
}
afterEvaluate
{
verifyReleaseResources
.
enabled
(
false
)
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录