Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
component
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王涛55
component
Commits
50f69bbc
Commit
50f69bbc
authored
Sep 24, 2019
by
王涛55
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:组件间的功能调研
parent
dc5b779c
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
922 additions
and
14 deletions
+922
-14
ModuleProject/app/src/main/java/com/hikcreate/app/AppActivityLifeCycle.java
+0
-1
ModuleProject/app/src/main/java/com/hikcreate/app/CommonApplication.java
+12
-8
ModuleProject/app_common/src/main/java/com/hikcreate/data/config/ActivityLifeCycleInitConfig.java
+19
-0
ModuleProject/app_common/src/main/java/com/hikcreate/data/config/AppInitConfig.java
+17
-0
ModuleProject/app_common/src/main/java/com/hikcreate/data/config/AppProvider.java
+20
-0
ModuleProject/app_login/src/main/java/com/hikcreate/login/moduel/router/action/change/ChangePwd.java
+27
-0
ModuleProject/app_login/src/main/java/com/hikcreate/login/moduel/router/action/login/LoginAction.java
+33
-0
ModuleProject/app_login/src/main/java/com/hikcreate/login/moduel/router/provider/ChangePwdProvider.java
+21
-0
ModuleProject/app_login/src/main/java/com/hikcreate/login/moduel/router/provider/LoginProvider.java
+20
-0
ModuleProject/app_login/src/main/java/com/hikcreate/login/testLoginActivity.java
+19
-0
ModuleProject/app_login/src/main/java/com/hikcreate/test/CommonApplication.java
+14
-2
ModuleProject/app_login/src/main/java/com/init/LoginActivityLifeCycle.java
+1
-1
ModuleProject/app_login/src/main/java/com/init/LoginAppLogic.java
+1
-1
ModuleProject/app_passport/build.gradle
+19
-0
ModuleProject/app_passport/src/main/java/com/hikcreate/init/PassPortActivityLifeCycle.java
+50
-0
ModuleProject/app_passport/src/main/java/com/hikcreate/init/PassPortAppLogic.java
+35
-0
ModuleProject/app_passport/src/main/java/com/hikcreate/test/CommonApplication.java
+35
-0
ModuleProject/app_passport/src/main/module/AndroidManifest.xml
+13
-0
ModuleProject/app_passport/src/main/res/mipmap-hdpi/ic_launcher.png
+0
-0
ModuleProject/config/app_module_config.gradle
+1
-1
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/ErrorAction.java
+45
-0
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/LocalRouter.java
+140
-0
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/ModuleAction.java
+24
-0
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/ModuleActionResult.java
+116
-0
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/ModuleProvider.java
+31
-0
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/router/RouterRequest.java
+0
-0
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/router/RouterResponse.java
+100
-0
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/tools/Logger.java
+45
-0
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/tools/ProcessUtil.java
+64
-0
No files found.
ModuleProject/app/src/main/java/com/hikcreate/app/AppActivityLifeCycle.java
View file @
50f69bbc
...
...
@@ -3,7 +3,6 @@ package com.hikcreate.app;
import
android.app.Activity
;
import
android.os.Bundle
;
import
android.widget.Toast
;
import
com.hikcreate.base.BaseActivityLifeLogic
;
/**
...
...
ModuleProject/app/src/main/java/com/hikcreate/app/CommonApplication.java
View file @
50f69bbc
...
...
@@ -3,9 +3,10 @@ package com.hikcreate.app;
import
android.app.Application
;
import
com.hikcreate.base.AppContext
;
import
com.hikcreate.data.config.ActivityLifeCycleInitConfig
;
import
com.hikcreate.data.config.AppInitConfig
;
/**
* 类说明
*
* @author wangtao55
* @date 2019/9/23
...
...
@@ -16,19 +17,22 @@ public class CommonApplication extends Application {
@Override
public
void
onCreate
()
{
super
.
onCreate
();
registerApp
Life
();
registerApp
Init
();
registerActivityLife
();
AppContext
.
getInstance
().
logicOnCreate
(
this
);
}
private
void
registerAppLife
(){
AppContext
.
getInstance
().
registerAppLogic
(
"com.login.LoginAppLogic"
);
AppContext
.
getInstance
().
registerAppLogic
(
"com.hikcreate.app.AppAppLogic"
);
private
void
registerAppInit
(){
//登录组件
AppContext
.
getInstance
().
registerAppLogic
(
AppInitConfig
.
LOGIN_CONFIG
);
//app壳组件
AppContext
.
getInstance
().
registerAppLogic
(
AppInitConfig
.
APP_CONFIG
);
}
private
void
registerActivityLife
(){
AppContext
.
getInstance
().
registerActivityLifeLogic
(
"com.login.LoginActivityLifeCycle"
);
AppContext
.
getInstance
().
registerActivityLifeLogic
(
"com.hikcreate.app.AppActivityLifeCycle"
);
//登录组件的acitivity生命周期监控
AppContext
.
getInstance
().
registerActivityLifeLogic
(
ActivityLifeCycleInitConfig
.
LOGIN_CONFIG
);
//app壳组件的acitivity生命周期监控
AppContext
.
getInstance
().
registerActivityLifeLogic
(
ActivityLifeCycleInitConfig
.
APP_CONFIG
);
}
@Override
...
...
ModuleProject/app_common/src/main/java/com/hikcreate/data/config/ActivityLifeCycleInitConfig.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
data
.
config
;
/**
* Activity初始化的配置类
*
* @author wangtao55
* @date 2019/9/24
* @mail wangtao55@hikcreate.com
*/
public
class
ActivityLifeCycleInitConfig
{
//login
public
static
final
String
LOGIN_CONFIG
=
"com.init.LoginActivityLifeCycle"
;
//app
public
static
final
String
APP_CONFIG
=
"com.hikcreate.app.AppActivityLifeCycle"
;
}
ModuleProject/app_common/src/main/java/com/hikcreate/data/config/AppInitConfig.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
data
.
config
;
/**
* App初始化的配置类
*
* @author wangtao55
* @date 2019/9/24
* @mail wangtao55@hikcreate.com
*/
public
class
AppInitConfig
{
//login
public
static
final
String
LOGIN_CONFIG
=
"com.init.LoginAppLogic"
;
//App
public
static
final
String
APP_CONFIG
=
"com.hikcreate.app.AppAppLogic"
;
}
ModuleProject/app_common/src/main/java/com/hikcreate/data/config/AppProvider.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
data
.
config
;
/**
* 功能Provider定义类
*
* @author wangtao55
* @date 2019/9/24
* @mail wangtao55@hikcreate.com
*/
public
class
AppProvider
{
//登录模块 Provider
public
static
final
String
LOGIN_PROVIDER
=
"login_provider"
;
public
static
final
String
PWD_PROVIDER
=
"pwd_provider"
;
//登录模块Aciton
public
static
final
String
LOGIN_ACTION
=
"login_action"
;
public
static
final
String
PWD_ACTION
=
"pwd_action"
;
}
ModuleProject/app_login/src/main/java/com/hikcreate/login/moduel/router/action/change/ChangePwd.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
login
.
moduel
.
router
.
action
.
change
;
import
android.content.Context
;
import
com.hikcreate.module_router.ModuleAction
;
import
com.hikcreate.module_router.ModuleActionResult
;
import
java.util.HashMap
;
/**
* 修改密码
*
* @author wangtao55
* @date 2019/9/24
* @mail wangtao55@hikcreate.com
*/
public
class
ChangePwd
extends
ModuleAction
{
@Override
public
boolean
isAsync
(
Context
context
,
HashMap
<
String
,
String
>
requestData
)
{
return
false
;
}
@Override
public
ModuleActionResult
invoke
(
Context
context
,
HashMap
<
String
,
String
>
requestData
)
{
return
null
;
}
}
ModuleProject/app_login/src/main/java/com/hikcreate/login/moduel/router/action/login/LoginAction.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
login
.
moduel
.
router
.
action
.
login
;
import
android.content.Context
;
import
com.hikcreate.module_router.ModuleAction
;
import
com.hikcreate.module_router.ModuleActionResult
;
import
java.util.HashMap
;
/**
* 登录action
*
* @author wangtao55
* @date 2019/9/24
* @mail wangtao55@hikcreate.com
*/
public
class
LoginAction
extends
ModuleAction
{
@Override
public
boolean
isAsync
(
Context
context
,
HashMap
<
String
,
String
>
requestData
)
{
return
false
;
}
@Override
public
ModuleActionResult
invoke
(
Context
context
,
HashMap
<
String
,
String
>
requestData
)
{
ModuleActionResult
result
=
new
ModuleActionResult
.
Builder
()
.
code
(
ModuleActionResult
.
CODE_SUCCESS
)
.
msg
(
"登录成功"
)
.
data
(
"我是来自登录界面的诗句"
)
.
object
(
null
)
.
build
();
return
null
;
}
}
ModuleProject/app_login/src/main/java/com/hikcreate/login/moduel/router/provider/ChangePwdProvider.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
login
.
moduel
.
router
.
provider
;
import
com.hikcreate.login.moduel.router.action.change.ChangePwd
;
import
com.hikcreate.login.moduel.router.action.login.LoginAction
;
import
com.hikcreate.module_router.ModuleProvider
;
import
static
com
.
hikcreate
.
data
.
config
.
AppProvider
.
PWD_ACTION
;
/**
* 登录Provider
*
* @author wangtao55
* @date 2019/9/24
* @mail wangtao55@hikcreate.com
*/
public
class
ChangePwdProvider
extends
ModuleProvider
{
@Override
protected
void
registerActions
()
{
registerAction
(
PWD_ACTION
,
new
ChangePwd
());
}
}
ModuleProject/app_login/src/main/java/com/hikcreate/login/moduel/router/provider/LoginProvider.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
login
.
moduel
.
router
.
provider
;
import
com.hikcreate.login.moduel.router.action.login.LoginAction
;
import
com.hikcreate.module_router.ModuleProvider
;
import
static
com
.
hikcreate
.
data
.
config
.
AppProvider
.
LOGIN_ACTION
;
/**
* 登录Provider
*
* @author wangtao55
* @date 2019/9/24
* @mail wangtao55@hikcreate.com
*/
public
class
LoginProvider
extends
ModuleProvider
{
@Override
protected
void
registerActions
()
{
registerAction
(
LOGIN_ACTION
,
new
LoginAction
());
}
}
ModuleProject/app_login/src/main/java/com/hikcreate/login/testLoginActivity.java
View file @
50f69bbc
...
...
@@ -2,8 +2,14 @@ package com.hikcreate.login;
import
android.os.Bundle
;
import
android.support.v7.app.AppCompatActivity
;
import
android.view.View
;
import
com.app.login.R
;
import
com.hikcreate.base.AppContext
;
import
com.hikcreate.data.config.AppProvider
;
import
com.hikcreate.module_router.LocalRouter
;
import
com.hikcreate.module_router.router.RouterRequest
;
import
com.hikcreate.module_router.router.RouterResponse
;
/**
* 类说明
...
...
@@ -18,6 +24,19 @@ public class testLoginActivity extends AppCompatActivity {
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
lg_app_test
);
findViewById
(
R
.
id
.
mBtnLogin
).
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
//
// RouterResponse response = LocalRouter.getInstance(AppContext.getInstance())
// .route(testLoginActivity.this,
// RouterRequest.obtain(testLoginActivity.this).provider(AppProvider.LOGIN_ACTION)
// .action("sync")
// .data("1", "Hello")
// .data("2", "World"));
}
});
}
@Override
...
...
ModuleProject/app_login/src/main/java/com/hikcreate/test/CommonApplication.java
View file @
50f69bbc
...
...
@@ -3,6 +3,12 @@ package com.hikcreate.test;
import
android.app.Application
;
import
com.hikcreate.base.AppContext
;
import
com.hikcreate.data.config.ActivityLifeCycleInitConfig
;
import
com.hikcreate.data.config.AppInitConfig
;
import
com.hikcreate.data.config.AppProvider
;
import
com.hikcreate.login.moduel.router.provider.ChangePwdProvider
;
import
com.hikcreate.login.moduel.router.provider.LoginProvider
;
import
com.hikcreate.module_router.LocalRouter
;
/**
*
...
...
@@ -15,11 +21,17 @@ public class CommonApplication extends Application {
@Override
public
void
onCreate
()
{
super
.
onCreate
();
AppContext
.
getInstance
().
registerAppLogic
(
"com.login.LoginAppLogic"
);
AppContext
.
getInstance
().
registerActivityLifeLogic
(
"com.login.LoginActivityLifeCycle"
);
AppContext
.
getInstance
().
registerAppLogic
(
AppInitConfig
.
LOGIN_CONFIG
);
AppContext
.
getInstance
().
registerActivityLifeLogic
(
ActivityLifeCycleInitConfig
.
LOGIN_CONFIG
);
AppContext
.
getInstance
().
logicOnCreate
(
this
);
}
private
void
initProviderCreate
(){
LocalRouter
.
getInstance
(
AppContext
.
getInstance
()).
registerProvider
(
AppProvider
.
LOGIN_PROVIDER
,
new
LoginProvider
());
LocalRouter
.
getInstance
(
AppContext
.
getInstance
()).
registerProvider
(
AppProvider
.
PWD_PROVIDER
,
new
ChangePwdProvider
());
}
@Override
public
void
onTerminate
()
{
super
.
onTerminate
();
...
...
ModuleProject/app_login/src/main/java/com/
login
/LoginActivityLifeCycle.java
→
ModuleProject/app_login/src/main/java/com/
init
/LoginActivityLifeCycle.java
View file @
50f69bbc
package
com
.
login
;
package
com
.
init
;
import
android.app.Activity
;
import
android.os.Bundle
;
...
...
ModuleProject/app_login/src/main/java/com/
login
/LoginAppLogic.java
→
ModuleProject/app_login/src/main/java/com/
init
/LoginAppLogic.java
View file @
50f69bbc
package
com
.
login
;
package
com
.
init
;
import
android.content.res.Configuration
;
import
android.util.Log
;
...
...
ModuleProject/app_passport/build.gradle
View file @
50f69bbc
...
...
@@ -33,6 +33,25 @@ android {
}
}
compileOptions
{
encoding
=
'utf-8'
sourceCompatibility
JavaVersion
.
VERSION_1_8
targetCompatibility
JavaVersion
.
VERSION_1_8
}
sourceSets
{
main
{
if
(
rootProject
.
build_module
==
build_module_passport
)
{
manifest
.
srcFile
'src/main/module/AndroidManifest.xml'
}
else
{
manifest
.
srcFile
'src/main/AndroidManifest.xml'
java
{
exclude
'com/hikcreate/test/**'
}
}
}
}
dexOptions
{
preDexLibraries
=
false
}
...
...
ModuleProject/app_passport/src/main/java/com/hikcreate/init/PassPortActivityLifeCycle.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
init
;
import
android.app.Activity
;
import
android.os.Bundle
;
import
android.widget.Toast
;
import
com.hikcreate.base.BaseActivityLifeLogic
;
/**
*
* @author wangtao55
* @date 2019/9/23
* @mail wangtao55@hikcreate.com
*/
public
class
PassPortActivityLifeCycle
extends
BaseActivityLifeLogic
{
@Override
public
void
onActivityCreated
(
Activity
activity
,
Bundle
savedInstanceState
)
{
Toast
.
makeText
(
activity
,
"我来到了登录页面"
,
Toast
.
LENGTH_LONG
).
show
();
}
@Override
public
void
onActivityStarted
(
Activity
activity
)
{
}
@Override
public
void
onActivityResumed
(
Activity
activity
)
{
}
@Override
public
void
onActivityPaused
(
Activity
activity
)
{
}
@Override
public
void
onActivityStopped
(
Activity
activity
)
{
}
@Override
public
void
onActivityDestroyed
(
Activity
activity
)
{
}
@Override
public
void
onActivitySaveInstanceState
(
Activity
activity
,
Bundle
savedInstanceState
)
{
}
}
ModuleProject/app_passport/src/main/java/com/hikcreate/init/PassPortAppLogic.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
init
;
import
android.content.res.Configuration
;
import
android.util.Log
;
import
com.hikcreate.base.BaseAppLogic
;
/**
* 类说明
*
* @author wangtao55
* @date 2019/9/23
* @mail wangtao55@hikcreate.com
*/
public
class
PassPortAppLogic
extends
BaseAppLogic
{
@Override
public
void
onCreate
()
{
Log
.
v
(
"LoginAppLogic"
,
"onCreate--------------------->"
);
}
@Override
public
void
onTerminate
()
{
Log
.
v
(
"LoginAppLogic"
,
"onTerminate--------------------->"
);
}
@Override
public
void
onLowMemory
()
{
Log
.
v
(
"LoginAppLogic"
,
"onLowMemory--------------------->"
);
}
@Override
public
void
onConfigurationChanged
(
Configuration
newConfig
)
{
Log
.
v
(
"LoginAppLogic"
,
"onConfigurationChanged--------------------->"
);
}
}
ModuleProject/app_passport/src/main/java/com/hikcreate/test/CommonApplication.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
test
;
import
android.app.Application
;
import
com.hikcreate.base.AppContext
;
/**
*
* @author wangtao55
* @date 2019/9/23
* @mail wangtao55@hikcreate.com
*/
public
class
CommonApplication
extends
Application
{
@Override
public
void
onCreate
()
{
super
.
onCreate
();
AppContext
.
getInstance
().
registerAppLogic
(
"com.hikcreate.init.PassPortAppLogic"
);
AppContext
.
getInstance
().
registerActivityLifeLogic
(
"com.hikcreate.init.PassPortActivityLifeCycle"
);
AppContext
.
getInstance
().
logicOnCreate
(
this
);
}
@Override
public
void
onTerminate
()
{
super
.
onTerminate
();
AppContext
.
getInstance
().
logicOnTerminate
();
}
@Override
public
void
onLowMemory
()
{
super
.
onLowMemory
();
AppContext
.
getInstance
().
logicOnLowMemory
();
}
}
ModuleProject/app_passport/src/main/module/AndroidManifest.xml
View file @
50f69bbc
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
package=
"com.app.login"
>
<application
android:roundIcon=
"@mipmap/ic_launcher"
android:allowBackup=
"false"
android:name=
"com.hikcreate.test.CommonApplication"
android:theme=
"@style/Theme.AppCompat.Light.NoActionBar"
android:icon=
"@mipmap/ic_launcher"
android:label=
"passport"
tools:ignore=
"GoogleAppIndexingWarning"
tools:replace=
"android:icon,android:roundIcon,android:theme,android:label,android:allowBackup"
>
</application>
</manifest>
\ No newline at end of file
ModuleProject/app_passport/src/main/res/mipmap-hdpi/ic_launcher.png
0 → 100644
View file @
50f69bbc
13.3 KB
ModuleProject/config/app_module_config.gradle
View file @
50f69bbc
...
...
@@ -19,4 +19,4 @@ ext.build_modele_passport_resourcePrefix = "passport_"
ext
.
build_modele_baidu_resourcePrefix
=
"baidu_"
//当前运行的model
ext
.
build_module
=
build_module_
login
ext
.
build_module
=
build_module_
app
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/ErrorAction.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
module_router
;
import
android.content.Context
;
import
java.util.HashMap
;
/**
* Created by wanglei on 2016/12/28.
*/
public
class
ErrorAction
extends
ModuleAction
{
private
static
final
String
DEFAULT_MESSAGE
=
"Something was really wrong. Ha ha!"
;
private
int
mCode
;
private
String
mMessage
;
private
boolean
mAsync
;
public
ErrorAction
()
{
mCode
=
ModuleActionResult
.
CODE_ERROR
;
mMessage
=
DEFAULT_MESSAGE
;
mAsync
=
false
;
}
public
ErrorAction
(
boolean
isAsync
,
int
code
,
String
message
)
{
this
.
mCode
=
code
;
this
.
mMessage
=
message
;
this
.
mAsync
=
isAsync
;
}
@Override
public
boolean
isAsync
(
Context
context
,
HashMap
<
String
,
String
>
requestData
)
{
return
mAsync
;
}
@Override
public
ModuleActionResult
invoke
(
Context
context
,
HashMap
<
String
,
String
>
requestData
)
{
ModuleActionResult
result
=
new
ModuleActionResult
.
Builder
()
.
code
(
mCode
)
.
msg
(
mMessage
)
.
data
(
null
)
.
object
(
null
)
.
build
();
return
result
;
}
}
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/LocalRouter.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
module_router
;
import
android.content.ComponentName
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.ServiceConnection
;
import
android.os.IBinder
;
import
android.os.RemoteException
;
import
android.support.annotation.NonNull
;
import
com.hikcreate.base.AppContext
;
import
com.hikcreate.module_router.router.RouterRequest
;
import
com.hikcreate.module_router.router.RouterResponse
;
import
com.hikcreate.module_router.tools.Logger
;
import
com.hikcreate.module_router.tools.ProcessUtil
;
import
java.util.HashMap
;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
static
android
.
content
.
Context
.
BIND_AUTO_CREATE
;
/**
* @author wangtao55
* @date 2019/9/19
* @mail wangtao55@hikcreate.com
*/
public
class
LocalRouter
{
private
static
final
String
TAG
=
"LocalRouter"
;
private
String
mProcessName
=
ProcessUtil
.
UNKNOWN_PROCESS_NAME
;
private
static
LocalRouter
sInstance
=
null
;
private
HashMap
<
String
,
ModuleProvider
>
mProviders
=
null
;
private
AppContext
mApplication
;
private
static
ExecutorService
threadPool
=
null
;
private
LocalRouter
(
AppContext
context
)
{
mApplication
=
context
;
mProcessName
=
ProcessUtil
.
getProcessName
(
context
.
getApplication
(),
ProcessUtil
.
getMyProcessId
());
mProviders
=
new
HashMap
<>();
}
public
static
synchronized
LocalRouter
getInstance
(
@NonNull
AppContext
context
)
{
if
(
sInstance
==
null
)
{
sInstance
=
new
LocalRouter
(
context
);
}
return
sInstance
;
}
private
static
synchronized
ExecutorService
getThreadPool
()
{
if
(
null
==
threadPool
)
{
threadPool
=
Executors
.
newCachedThreadPool
();
}
return
threadPool
;
}
public
void
registerProvider
(
String
providerName
,
ModuleProvider
provider
)
{
mProviders
.
put
(
providerName
,
provider
);
}
boolean
answerWiderAsync
(
@NonNull
RouterRequest
routerRequest
)
{
if
(
mProcessName
.
equals
(
routerRequest
.
getDomain
()))
{
return
findRequestAction
(
routerRequest
).
isAsync
(
mApplication
.
getApplication
(),
routerRequest
.
getData
());
}
else
{
return
true
;
}
}
public
RouterResponse
route
(
Context
context
,
@NonNull
RouterRequest
routerRequest
)
throws
Exception
{
Logger
.
d
(
TAG
,
"Process:"
+
mProcessName
+
"\nLocal route start: "
+
System
.
currentTimeMillis
());
RouterResponse
routerResponse
=
new
RouterResponse
();
// Local request
if
(
mProcessName
.
equals
(
routerRequest
.
getDomain
()))
{
Object
attachment
=
routerRequest
.
getAndClearObject
();
HashMap
<
String
,
String
>
params
=
new
HashMap
<>(
routerRequest
.
getData
());
Logger
.
d
(
TAG
,
"Process:"
+
mProcessName
+
"\nLocal find action start: "
+
System
.
currentTimeMillis
());
ModuleAction
targetAction
=
findRequestAction
(
routerRequest
);
routerRequest
.
isIdle
.
set
(
true
);
Logger
.
d
(
TAG
,
"Process:"
+
mProcessName
+
"\nLocal find action end: "
+
System
.
currentTimeMillis
());
routerResponse
.
mIsAsync
=
attachment
==
null
?
targetAction
.
isAsync
(
context
,
params
)
:
targetAction
.
isAsync
(
context
,
params
,
attachment
);
// Sync result, return the result immediately.
if
(!
routerResponse
.
mIsAsync
)
{
ModuleActionResult
result
=
attachment
==
null
?
targetAction
.
invoke
(
context
,
params
)
:
targetAction
.
invoke
(
context
,
params
,
attachment
);
routerResponse
.
mResultString
=
result
.
toString
();
routerResponse
.
mObject
=
result
.
getObject
();
Logger
.
d
(
TAG
,
"Process:"
+
mProcessName
+
"\nLocal sync end: "
+
System
.
currentTimeMillis
());
}
// Async result, use the thread pool to execute the task.
else
{
LocalTask
task
=
new
LocalTask
(
routerResponse
,
params
,
attachment
,
context
,
targetAction
);
routerResponse
.
mAsyncResponse
=
getThreadPool
().
submit
(
task
);
}
}
return
routerResponse
;
}
private
ModuleAction
findRequestAction
(
RouterRequest
routerRequest
)
{
ModuleProvider
targetProvider
=
mProviders
.
get
(
routerRequest
.
getProvider
());
ErrorAction
defaultNotFoundAction
=
new
ErrorAction
(
false
,
ModuleActionResult
.
CODE_NOT_FOUND
,
"Not found the action."
);
if
(
null
==
targetProvider
)
{
return
defaultNotFoundAction
;
}
else
{
ModuleAction
targetAction
=
targetProvider
.
findAction
(
routerRequest
.
getAction
());
if
(
null
==
targetAction
)
{
return
defaultNotFoundAction
;
}
else
{
return
targetAction
;
}
}
}
private
class
LocalTask
implements
Callable
<
String
>
{
private
RouterResponse
mResponse
;
private
HashMap
<
String
,
String
>
mRequestData
;
private
Context
mContext
;
private
ModuleAction
mAction
;
private
Object
mObject
;
LocalTask
(
RouterResponse
routerResponse
,
HashMap
<
String
,
String
>
requestData
,
Object
object
,
Context
context
,
ModuleAction
maAction
)
{
this
.
mContext
=
context
;
this
.
mResponse
=
routerResponse
;
this
.
mRequestData
=
requestData
;
this
.
mAction
=
maAction
;
this
.
mObject
=
object
;
}
@Override
public
String
call
()
throws
Exception
{
ModuleActionResult
result
=
mObject
==
null
?
mAction
.
invoke
(
mContext
,
mRequestData
)
:
mAction
.
invoke
(
mContext
,
mRequestData
,
mObject
);
mResponse
.
mObject
=
result
.
getObject
();
Logger
.
d
(
TAG
,
"Process:"
+
mProcessName
+
"\nLocal async end: "
+
System
.
currentTimeMillis
());
return
result
.
toString
();
}
}
}
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/ModuleAction.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
module_router
;
import
android.content.Context
;
import
java.util.HashMap
;
/**
*
* @author wangtao55
* @date 2019/9/19
* @mail wangtao55@hikcreate.com
*/
public
abstract
class
ModuleAction
{
public
abstract
boolean
isAsync
(
Context
context
,
HashMap
<
String
,
String
>
requestData
);
public
abstract
ModuleActionResult
invoke
(
Context
context
,
HashMap
<
String
,
String
>
requestData
);
public
boolean
isAsync
(
Context
context
,
HashMap
<
String
,
String
>
requestData
,
Object
object
){
return
false
;
}
public
ModuleActionResult
invoke
(
Context
context
,
HashMap
<
String
,
String
>
requestData
,
Object
object
){
return
new
ModuleActionResult
.
Builder
().
code
(
ModuleActionResult
.
CODE_NOT_IMPLEMENT
).
msg
(
"This method has not yet been implemented."
).
build
();
}
}
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/ModuleActionResult.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
module_router
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
/**
*
* @author wangtao55
* @date 2019/9/19
* @mail wangtao55@hikcreate.com
*/
public
class
ModuleActionResult
{
public
static
final
int
CODE_SUCCESS
=
0x0000
;
public
static
final
int
CODE_ERROR
=
0x0001
;
public
static
final
int
CODE_NOT_FOUND
=
0X0002
;
public
static
final
int
CODE_INVALID
=
0X0003
;
public
static
final
int
CODE_ROUTER_NOT_REGISTER
=
0X0004
;
public
static
final
int
CODE_CANNOT_BIND_LOCAL
=
0X0005
;
public
static
final
int
CODE_REMOTE_EXCEPTION
=
0X0006
;
public
static
final
int
CODE_CANNOT_BIND_WIDE
=
0X0007
;
public
static
final
int
CODE_TARGET_IS_WIDE
=
0X0008
;
public
static
final
int
CODE_WIDE_STOPPING
=
0X0009
;
public
static
final
int
CODE_NOT_IMPLEMENT
=
0X000a
;
private
int
code
;
private
String
msg
;
private
String
data
;
private
Object
object
;
private
ModuleActionResult
(
Builder
builder
)
{
this
.
code
=
builder
.
mCode
;
this
.
msg
=
builder
.
mMsg
;
this
.
data
=
builder
.
mData
;
this
.
object
=
builder
.
mObject
;
}
public
Object
getObject
()
{
return
object
;
}
public
String
getData
()
{
return
data
;
}
public
int
getCode
()
{
return
code
;
}
public
String
getMsg
()
{
return
msg
;
}
@Override
public
String
toString
()
{
JSONObject
jsonObject
=
new
JSONObject
();
try
{
jsonObject
.
put
(
"code"
,
code
);
jsonObject
.
put
(
"msg"
,
msg
);
jsonObject
.
put
(
"data"
,
data
);
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
}
return
jsonObject
.
toString
();
}
public
static
class
Builder
{
private
int
mCode
;
private
String
mMsg
;
private
Object
mObject
;
private
String
mData
;
public
Builder
()
{
mCode
=
CODE_ERROR
;
mMsg
=
""
;
mObject
=
null
;
mData
=
null
;
}
public
Builder
resultString
(
String
resultString
)
{
try
{
JSONObject
jsonObject
=
new
JSONObject
(
resultString
);
this
.
mCode
=
jsonObject
.
getInt
(
"code"
);
this
.
mMsg
=
jsonObject
.
getString
(
"msg"
);
this
.
mData
=
jsonObject
.
getString
(
"data"
);
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
}
return
this
;
}
public
Builder
code
(
int
code
)
{
this
.
mCode
=
code
;
return
this
;
}
public
Builder
msg
(
String
msg
)
{
this
.
mMsg
=
msg
;
return
this
;
}
public
Builder
data
(
String
data
)
{
this
.
mData
=
data
;
return
this
;
}
public
Builder
object
(
Object
object
)
{
this
.
mObject
=
object
;
return
this
;
}
public
ModuleActionResult
build
()
{
return
new
ModuleActionResult
(
this
);
}
}
}
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/ModuleProvider.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
module_router
;
import
java.util.HashMap
;
/**
*
* @author wangtao55
* @date 2019/9/19
* @mail wangtao55@hikcreate.com
*/
public
abstract
class
ModuleProvider
{
private
boolean
mValid
=
true
;
private
HashMap
<
String
,
ModuleAction
>
mActions
;
public
ModuleProvider
(){
mActions
=
new
HashMap
<>();
registerActions
();
}
protected
void
registerAction
(
String
actionName
,
ModuleAction
action
){
mActions
.
put
(
actionName
,
action
);
}
public
ModuleAction
findAction
(
String
actionName
){
return
mActions
.
get
(
actionName
);
}
public
boolean
isValid
(){
return
mValid
;
}
protected
abstract
void
registerActions
();
}
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/router/RouterRequest.java
0 → 100644
View file @
50f69bbc
This diff is collapsed.
Click to expand it.
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/router/RouterResponse.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
module_router
.
router
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
java.util.concurrent.Future
;
import
java.util.concurrent.TimeUnit
;
/**
*
* @author wangtao55
* @date 2019/9/19
* @mail wangtao55@hikcreate.com
*/
public
class
RouterResponse
{
/**
* This field is MaActionResult.toString()
*/
public
String
mResultString
;
public
boolean
mIsAsync
=
true
;
public
Future
<
String
>
mAsyncResponse
;
public
Object
mObject
;
private
static
final
int
TIME_OUT
=
30
*
1000
;
private
long
mTimeOut
=
0
;
private
boolean
mHasGet
=
false
;
int
mCode
=
-
1
;
String
mMessage
=
""
;
String
mData
;
public
RouterResponse
()
{
this
(
TIME_OUT
);
}
public
RouterResponse
(
long
timeout
)
{
if
(
timeout
>
TIME_OUT
*
2
||
timeout
<
0
)
{
timeout
=
TIME_OUT
;
}
mTimeOut
=
timeout
;
}
public
boolean
isAsync
()
{
return
mIsAsync
;
}
public
String
get
()
throws
Exception
{
if
(
mIsAsync
)
{
mResultString
=
mAsyncResponse
.
get
(
mTimeOut
,
TimeUnit
.
MILLISECONDS
);
parseResult
();
}
else
{
parseResult
();
}
return
mResultString
;
}
private
void
parseResult
(){
if
(!
mHasGet
)
{
try
{
JSONObject
jsonObject
=
new
JSONObject
(
mResultString
);
this
.
mCode
=
jsonObject
.
getInt
(
"code"
);
this
.
mMessage
=
jsonObject
.
getString
(
"msg"
);
this
.
mData
=
jsonObject
.
getString
(
"data"
);
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
}
mHasGet
=
true
;
}
}
public
int
getCode
()
throws
Exception
{
if
(!
mHasGet
)
{
get
();
}
return
mCode
;
}
public
String
getMessage
()
throws
Exception
{
if
(!
mHasGet
)
{
get
();
}
return
mMessage
;
}
public
String
getData
()
throws
Exception
{
if
(!
mHasGet
)
{
get
();
}
return
mData
;
}
public
Object
getObject
()
throws
Exception
{
if
(!
mHasGet
)
{
get
();
}
return
mObject
;
}
}
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/tools/Logger.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
module_router
.
tools
;
import
android.util.Log
;
/**
*
* @author wangtao55
* @date 2019/9/19
* @mail wangtao55@hikcreate.com
*/
public
class
Logger
{
public
final
static
int
ERROR
=
1
;
public
final
static
int
WARN
=
2
;
public
final
static
int
INFO
=
3
;
public
final
static
int
DEBUG
=
4
;
public
final
static
int
VERBOSE
=
5
;
public
static
int
LOG_LEVEL
=
ERROR
;
public
static
void
e
(
String
tag
,
String
msg
)
{
if
(
LOG_LEVEL
>=
ERROR
)
Log
.
e
(
tag
,
msg
);
}
public
static
void
w
(
String
tag
,
String
msg
)
{
if
(
LOG_LEVEL
>=
WARN
)
Log
.
w
(
tag
,
msg
);
}
public
static
void
i
(
String
tag
,
String
msg
)
{
if
(
LOG_LEVEL
>=
INFO
)
Log
.
i
(
tag
,
msg
);
}
public
static
void
d
(
String
tag
,
String
msg
)
{
if
(
LOG_LEVEL
>=
DEBUG
)
Log
.
d
(
tag
,
msg
);
}
public
static
void
v
(
String
tag
,
String
msg
)
{
if
(
LOG_LEVEL
>=
VERBOSE
)
Log
.
v
(
tag
,
msg
);
}
}
ModuleProject/lib_module_common/src/main/java/com/hikcreate/module_router/tools/ProcessUtil.java
0 → 100644
View file @
50f69bbc
package
com
.
hikcreate
.
module_router
.
tools
;
import
android.app.ActivityManager
;
import
android.content.Context
;
import
android.text.TextUtils
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileReader
;
import
java.util.List
;
/**
*
* @author wangtao55
* @date 2019/9/19
* @mail wangtao55@hikcreate.com
*/
public
class
ProcessUtil
{
public
static
final
String
UNKNOWN_PROCESS_NAME
=
"unknown_process_name"
;
public
static
int
getMyProcessId
()
{
return
android
.
os
.
Process
.
myPid
();
}
public
static
String
getProcessName
(
int
pid
)
{
String
processName
=
UNKNOWN_PROCESS_NAME
;
try
{
File
file
=
new
File
(
"/proc/"
+
pid
+
"/"
+
"cmdline"
);
BufferedReader
mBufferedReader
=
new
BufferedReader
(
new
FileReader
(
file
));
processName
=
mBufferedReader
.
readLine
().
trim
();
mBufferedReader
.
close
();
return
processName
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(!
TextUtils
.
isEmpty
(
processName
))
{
return
processName
;
}
}
return
UNKNOWN_PROCESS_NAME
;
}
public
static
String
getProcessName
(
Context
context
,
int
pid
)
{
String
processName
=
getProcessName
(
pid
);
if
(
UNKNOWN_PROCESS_NAME
.
equals
(
processName
)){
ActivityManager
am
=
(
ActivityManager
)
context
.
getSystemService
(
Context
.
ACTIVITY_SERVICE
);
List
<
ActivityManager
.
RunningAppProcessInfo
>
runningApps
=
am
.
getRunningAppProcesses
();
if
(
runningApps
==
null
)
{
return
UNKNOWN_PROCESS_NAME
;
}
for
(
ActivityManager
.
RunningAppProcessInfo
procInfo
:
runningApps
)
{
if
(
procInfo
.
pid
==
pid
)
{
return
procInfo
.
processName
;
}
}
}
else
{
return
processName
;
}
return
UNKNOWN_PROCESS_NAME
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment