package com.dollearn.student
|
|
import android.app.Activity
|
import android.app.Application
|
import android.os.Bundle
|
import cn.sinata.rxnetty.NettyClient
|
import cn.sinata.xldutils.application.BaseApplication
|
import cn.sinata.xldutils.utils.SPUtils
|
import com.dollearn.student.network.Apis
|
import com.dollearn.student.utils.Const
|
import com.umeng.commonsdk.UMConfigure
|
import com.umeng.socialize.PlatformConfig
|
import io.reactivex.Flowable
|
import io.reactivex.disposables.Disposable
|
import org.json.JSONObject
|
import java.util.concurrent.TimeUnit
|
|
|
class WeparkApplication :BaseApplication(), Application.ActivityLifecycleCallbacks {
|
override fun getSPName() = "GWXSp"
|
private var heartSubscribe: Disposable? = null
|
|
private val activities = ArrayList<Activity>()
|
override fun onCreate() {
|
super.onCreate()
|
registerActivityLifecycleCallbacks(this)
|
//如果是主进程
|
// CrashReport.initCrashReport(getApplicationContext(), "b6046fe1eb", false);
|
UMConfigure.preInit(this, Const.UMENG_KEY, "")
|
}
|
|
/**
|
* 隐私合规
|
* 三方sdk延迟加载
|
* */
|
fun initSdk(){
|
// DownloadLibrary.init(this, resources.getIdentifier("ic_launcher", "mipmap", packageName),null, packageName)
|
UMConfigure.init(this, Const.UMENG_KEY, "", UMConfigure.DEVICE_TYPE_PHONE, "")
|
UMConfigure.setLogEnabled(true)
|
PlatformConfig.setWeixin(Const.WX_APP_ID, Const.WX_SECRET)
|
PlatformConfig.setQQZone(Const.QQ_APP_ID, Const.QQ_SECRET)
|
initNetty()
|
}
|
|
private fun initNetty() {
|
NettyClient.getInstance().init(this, Apis.SOCKET_SERVER, Apis.SOCKET_PORT, false)
|
NettyClient.getInstance().addOnMessageListener { message ->
|
try {
|
val json = JSONObject(message)
|
val method = json.optString("method")
|
val code = json.optString("code")
|
if (code == "200"){
|
when (method) {
|
Const.Method.PING_RECEIVE -> {//心跳
|
//延时发送心跳
|
if (heartSubscribe != null && !heartSubscribe?.isDisposed!!) {
|
heartSubscribe?.dispose()
|
}
|
heartSubscribe =
|
Flowable.just("").delay(5000, TimeUnit.MILLISECONDS).subscribe {
|
sendHeart()
|
}
|
}
|
|
// Const.Method.OFFLINE -> {//强制下线
|
// val topAct = activities[activities.lastIndex]
|
// SPUtils.instance().remove(Const.User.TOKEN).remove(Const.User.USER_ID).remove(Const.User.NO_PHONE).apply()
|
// val tipDialog = TipDialog()
|
// tipDialog.arguments = bundleOf("msg" to "您的账号已在其他地方登陆,请重新登陆","isAlert" to true)
|
// tipDialog.setDismissCallback(object :TipDialog.OnDismiss{
|
// override fun onDismiss() {
|
// exit()
|
// topAct.startActivity<LoginActivity>()
|
// }
|
// })
|
// tipDialog.show((topAct as BaseActivity).supportFragmentManager,"logout")
|
// }
|
}
|
}
|
}catch (e: Exception){
|
e.printStackTrace()
|
}
|
}
|
NettyClient.getInstance().setOnConnectListener {
|
//连接成功,发送一次心跳
|
sendHeart()
|
}
|
}
|
|
private fun sendHeart() {
|
val userId = SPUtils.instance().getString(Const.User.USER_ID)
|
val token = SPUtils.instance().getString(Const.User.TOKEN)
|
if (token.isNotEmpty()) {
|
NettyClient.getInstance()
|
.sendMessage("{\"data\":{\"userId\":$userId,\"token\":\"$token\",\"type\":1},\"method\":\"PING\",\"code\":200,\"msg\":\"SUCCESS\"}")
|
}
|
}
|
|
|
/**
|
* 关闭所有页面
|
*/
|
fun exit(){
|
activities.forEach {
|
it.finish()
|
}
|
}
|
|
companion object{ //全局配置
|
var lat:Double? = null
|
var lon:Double? = null
|
var province = "" //当前省
|
var provinceCode = "" //当前省
|
var cityName = "" //当前市
|
var cityCode = "" //当前市
|
var store = "" //门店名称
|
var storeId = "" //门店id
|
var avatar = "" //本人头像
|
|
var appContext: WeparkApplication? = null
|
fun getInstance(): WeparkApplication? {
|
if (appContext == null) {
|
appContext = WeparkApplication()
|
}
|
return appContext
|
}
|
}
|
|
override fun onActivityPaused(p0: Activity) {
|
|
}
|
|
override fun onActivityStarted(p0: Activity) {
|
}
|
|
override fun onActivityDestroyed(p0: Activity) {
|
activities.remove(p0)
|
}
|
|
override fun onActivitySaveInstanceState(p0: Activity, p1: Bundle) {
|
}
|
|
override fun onActivityStopped(p0: Activity) {
|
}
|
|
override fun onActivityCreated(p0: Activity, p1: Bundle?) {
|
activities.add(p0)
|
}
|
|
override fun onActivityResumed(p0: Activity) {
|
}
|
}
|