Skip to content

Commit 00cee9a

Browse files
author
hegj
committed
1.修复部分手机登录注册返回主页后闪退的bug
2.暂时去掉侧滑功能 3.添加全局捕捉异常库 4.修复Bugly上的bug
1 parent 1c321ed commit 00cee9a

27 files changed

+513
-542
lines changed

app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ dependencies {
107107
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0"
108108
//项目用到的库大部分封装在里面 具体在 config.gradle
109109
implementation rootProject.ext.customLibs
110+
111+
implementation 'cn.simonlee.widget:swipeback:1.0.15'
110112
}
111113
repositories {
112114
mavenCentral()

app/priguardMapping.txt

Lines changed: 249 additions & 366 deletions
Large diffs are not rendered by default.

app/release/output.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":3,"versionName":"1.0.3","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
1+
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":4,"versionName":"1.0.3","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]

app/src/main/AndroidManifest.xml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,18 @@
9999
android:label="开源项目"
100100
android:launchMode="singleTask"
101101
android:screenOrientation="portrait" />
102+
<activity
103+
android:name=".mvp.ui.activity.error.ErrorActivity"
104+
android:label="错误界面"
105+
android:process =":error_activity"
106+
android:launchMode="singleTask"
107+
android:screenOrientation="portrait" />
102108
<activity
103109
android:name="com.tencent.bugly.beta.ui.BetaActivity"
104110
android:configChanges="keyboardHidden|orientation|screenSize|locale"
105-
android:theme="@android:style/Theme.Translucent" /> <!-- Arms 配置 -->
111+
android:theme="@android:style/Theme.Translucent" />
112+
113+
<!-- Arms 配置 -->
106114
<meta-data
107115
android:name="design_width_in_dp"
108116
android:value="375" />

app/src/main/java/me/hegj/wandroid/app/AppLifecyclesImpl.kt

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ import android.app.Application
1919
import android.content.Context
2020
import androidx.multidex.MultiDex
2121
import butterknife.ButterKnife
22-
import com.billy.android.swipe.*
23-
import com.billy.android.swipe.SwipeConsumer.DIRECTION_LEFT
24-
import com.billy.android.swipe.listener.SimpleSwipeListener
22+
import cat.ereza.customactivityoncrash.config.CaocConfig
2523
import com.jess.arms.base.delegate.AppLifecycles
2624
import com.jess.arms.integration.cache.IntelligentCache
2725
import com.jess.arms.utils.ArmsUtils
@@ -33,12 +31,12 @@ import com.tencent.bugly.Bugly
3331
import com.tencent.bugly.crashreport.CrashReport.UserStrategy
3432
import com.tencent.mmkv.MMKV
3533
import me.hegj.wandroid.BuildConfig
34+
import me.hegj.wandroid.R
3635
import me.hegj.wandroid.app.utils.HttpUtils
37-
import me.hegj.wandroid.app.utils.sliding.MyActivitySlidingBackConsumer
3836
import me.hegj.wandroid.app.weight.loadCallBack.EmptyCallback
3937
import me.hegj.wandroid.app.weight.loadCallBack.ErrorCallback
4038
import me.hegj.wandroid.app.weight.loadCallBack.LoadingCallback
41-
import me.hegj.wandroid.mvp.ui.activity.MainActivity
39+
import me.hegj.wandroid.mvp.ui.activity.error.ErrorActivity
4240
import me.hegj.wandroid.mvp.ui.activity.start.SplashActivity
4341

4442

@@ -58,7 +56,7 @@ class AppLifecyclesImpl : AppLifecycles {
5856

5957
override fun onCreate(application: Application) {
6058
//初始化 SmartSwipeBack
61-
SmartSwipeBack.activityBack(application, { activity ->
59+
/* SmartSwipeBack.activityBack(application, { activity ->
6260
MyActivitySlidingBackConsumer(activity)
6361
.setRelativeMoveFactor(0.5f)
6462
.setScrimColor(-0x80000000)
@@ -74,7 +72,7 @@ class AppLifecyclesImpl : AppLifecycles {
7472
})
7573
}, {
7674
it !is MainActivity || it is SplashActivity//禁止主Activity滑动返回
77-
})
75+
})*/
7876

7977
//初始化MMKV
8078
MMKV.initialize(application.filesDir.absolutePath + "/mmkv")
@@ -93,7 +91,6 @@ class AppLifecyclesImpl : AppLifecycles {
9391
.addCallback(EmptyCallback())//
9492
.setDefaultCallback(SuccessCallback::class.java)//设置默认加载状态页
9593
.commit()
96-
9794
//初始化Bugly
9895
val context = application.applicationContext
9996
// 获取当前包名
@@ -105,6 +102,19 @@ class AppLifecyclesImpl : AppLifecycles {
105102
strategy.isUploadProcess = processName == null || processName == packageName
106103
// 初始化Bugly
107104
Bugly.init(context, "5a5f6366fc", BuildConfig.DEBUG)
105+
106+
CaocConfig.Builder.create()
107+
.backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT) //default: CaocConfig.BACKGROUND_MODE_SHOW_CUSTOM
108+
.enabled(true)//是否启用CustomActivityOnCrash崩溃拦截机制 必须启用!不然集成这个库干啥???
109+
.showErrorDetails(false) //是否必须显示包含错误详细信息的按钮 default: true
110+
.showRestartButton(false) //是否必须显示“重新启动应用程序”按钮或“关闭应用程序”按钮default: true
111+
.logErrorOnRestart(false) //是否必须重新堆栈堆栈跟踪 default: true
112+
.trackActivities(true) //是否必须跟踪用户访问的活动及其生命周期调用 default: false
113+
.minTimeBetweenCrashesMs(2000) //应用程序崩溃之间必须经过的时间 default: 3000
114+
.restartActivity(SplashActivity::class.java) // 重启的activity
115+
.errorActivity(ErrorActivity::class.java) //发生错误跳转的activity
116+
.eventListener(null) //允许你指定事件侦听器,以便在库显示错误活动 default: null
117+
.apply()
108118
}
109119

110120
override fun onTerminate(application: Application) {

app/src/main/java/me/hegj/wandroid/mvp/ui/BaseActivity.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,10 @@ import com.jess.arms.utils.ThirdViewUtil.convertAutoView
2020
import com.trello.rxlifecycle2.android.ActivityEvent
2121
import io.reactivex.subjects.BehaviorSubject
2222
import io.reactivex.subjects.Subject
23-
import me.hegj.wandroid.app.event.SettingChangeEvent
2423
import me.hegj.wandroid.app.utils.SettingUtil
2524
import me.hegj.wandroid.app.utils.ShowUtils
2625
import me.hegj.wandroid.app.utils.StatusBarUtil
2726
import me.yokeyword.fragmentation.SupportActivity
28-
import org.greenrobot.eventbus.Subscribe
2927
import javax.inject.Inject
3028

3129
abstract class BaseActivity<P : IPresenter> : SupportActivity(), IActivity, ActivityLifecycleable, IView {
@@ -36,7 +34,6 @@ abstract class BaseActivity<P : IPresenter> : SupportActivity(), IActivity, Acti
3634
@Inject
3735
@JvmField
3836
var mPresenter: P? = null//如果当前页面逻辑简单, Presenter 可以为 null
39-
4037
@Synchronized
4138
override fun provideCache(): Cache<String, Any> {
4239
if (mCache == null) {
@@ -120,7 +117,6 @@ abstract class BaseActivity<P : IPresenter> : SupportActivity(), IActivity, Acti
120117
}
121118

122119

123-
124120
override fun showLoading() {
125121
ShowUtils.showLoading(this)
126122
}
@@ -133,4 +129,5 @@ abstract class BaseActivity<P : IPresenter> : SupportActivity(), IActivity, Acti
133129
ShowUtils.showDialog(this, message)
134130
}
135131

132+
136133
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package me.hegj.wandroid.mvp.ui.activity.error
2+
3+
import android.content.ClipData
4+
import android.content.ClipboardManager
5+
import android.content.Context
6+
import android.os.Bundle
7+
import cat.ereza.customactivityoncrash.CustomActivityOnCrash
8+
import com.jess.arms.di.component.AppComponent
9+
import com.jess.arms.mvp.IPresenter
10+
import kotlinx.android.synthetic.main.activity_error.*
11+
import kotlinx.android.synthetic.main.include_toolbar.*
12+
import me.hegj.wandroid.R
13+
import me.hegj.wandroid.app.utils.ShowUtils
14+
import me.hegj.wandroid.mvp.ui.BaseActivity
15+
16+
17+
class ErrorActivity : BaseActivity<IPresenter>() {
18+
override fun setupActivityComponent(appComponent: AppComponent) {
19+
}
20+
21+
override fun initView(savedInstanceState: Bundle?): Int {
22+
return R.layout.activity_error
23+
}
24+
25+
override fun initData(savedInstanceState: Bundle?) {
26+
toolbar.run {
27+
setSupportActionBar(this)
28+
title = "发生错误"
29+
}
30+
31+
val config = CustomActivityOnCrash.getConfigFromIntent(intent)
32+
error_restart.setOnClickListener {
33+
config?.run {
34+
CustomActivityOnCrash.restartApplication(this@ErrorActivity, this)
35+
}
36+
}
37+
error_sendError.setOnClickListener {
38+
//获取剪贴板管理器:
39+
val cm = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
40+
// 创建普通字符型ClipData
41+
val mClipData = ClipData.newPlainText("Label", CustomActivityOnCrash.getStackTraceFromIntent(intent))
42+
// 将ClipData内容放到系统剪贴板里。
43+
cm.primaryClip = mClipData
44+
ShowUtils.showToast(this, "已复制错误日志到粘贴板")
45+
ShowUtils.showDialog(this, "扣 扣:824868922\n\n微 信:hgj840\n\n邮 箱:[email protected]", "联系我")
46+
}
47+
}
48+
}

app/src/main/java/me/hegj/wandroid/mvp/ui/activity/main/home/HomeFragment.kt

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeContract.View {
203203
val view = LayoutInflater.from(_mActivity).inflate(R.layout.include_banner, null).apply {
204204
banner.run {
205205
setAdapter(BGABanner.Adapter<ImageView, BannerResponse> { _: BGABanner, view: ImageView, banner: BannerResponse?, i: Int ->
206-
ArmsUtils.obtainAppComponentFromContext(_mActivity).imageLoader().loadImage(_mActivity,
206+
ArmsUtils.obtainAppComponentFromContext(_mActivity).imageLoader().loadImage(_mActivity.applicationContext,
207207
ImageConfigImpl
208208
.builder()
209209
.url(banner?.imagePath)
@@ -293,27 +293,22 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeContract.View {
293293
@Subscribe
294294
fun freshLogin(event: LoginFreshEvent) {
295295
//如果是登录了, 当前界面的数据与账户收藏集合id匹配的值需要设置已经收藏
296-
GlobalScope.launch{
297-
async{
298-
if (event.login) {
299-
event.collectIds.forEach {
300-
for (item in adapter.data) {
301-
if (item.id == it.toInt()) {
302-
item.collect = true
303-
break
304-
}
305-
}
306-
}
307-
} else {
308-
//退出了,把所有的收藏全部变为未收藏
309-
for (item in adapter.data) {
310-
item.collect = false
296+
if (event.login) {
297+
event.collectIds.forEach {
298+
for (item in adapter.data) {
299+
if (item.id == it.toInt()) {
300+
item.collect = true
301+
break
311302
}
312303
}
313-
}.run {
314-
adapter.notifyDataSetChanged()
304+
}
305+
} else {
306+
//退出了,把所有的收藏全部变为未收藏
307+
for (item in adapter.data) {
308+
item.collect = false
315309
}
316310
}
311+
adapter.notifyDataSetChanged()
317312
}
318313

319314
/**
@@ -322,7 +317,7 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeContract.View {
322317
@Subscribe
323318
fun collectChange(event: CollectEvent) {
324319
//使用协程做耗时操作
325-
GlobalScope.launch{
320+
GlobalScope.launch {
326321
async {
327322
var indexResult = -1
328323
for (index in adapter.data.indices) {
@@ -334,7 +329,7 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeContract.View {
334329
}
335330
indexResult
336331
}.run {
337-
if(await()!=-1){
332+
if (await() != -1) {
338333
adapter.notifyItemChanged(await())
339334
}
340335
}

app/src/main/java/me/hegj/wandroid/mvp/ui/activity/main/home/search/SearchActivity.kt

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.view.Menu
77
import android.view.View
88
import android.widget.ImageView
99
import androidx.appcompat.widget.SearchView
10+
import androidx.core.content.ContextCompat
1011
import androidx.recyclerview.widget.LinearLayoutManager
1112
import com.afollestad.materialdialogs.MaterialDialog
1213
import com.google.gson.Gson
@@ -70,7 +71,7 @@ class SearchActivity : BaseActivity<SearchPresenter>(), SearchContract.View {
7071
MaterialDialog(this).show {
7172
title(text = "温馨提示")
7273
message(text = "确定清空搜索历史吗?")
73-
positiveButton(text = "清空"){
74+
positiveButton(text = "清空") {
7475
historyData.clear()
7576
adapter.setNewData(historyData)
7677
CacheUtil.setSearchHistoryData(Gson().toJson(historyData))
@@ -84,14 +85,14 @@ class SearchActivity : BaseActivity<SearchPresenter>(), SearchContract.View {
8485
if (historyData.contains(name)) {
8586
//当搜索历史中包含该数据时 删除添加
8687
historyData.remove(name)
87-
}else if(historyData.size>=10){
88-
historyData.removeAt(historyData.size-1)
88+
} else if (historyData.size >= 10) {
89+
historyData.removeAt(historyData.size - 1)
8990
}
90-
historyData.add(0,name)
91+
historyData.add(0, name)
9192
this@SearchActivity.adapter.setNewData(historyData)
9293
CacheUtil.setSearchHistoryData(Gson().toJson(historyData))
93-
launchActivity(Intent(this@SearchActivity,SearchResultActivity::class.java).apply {
94-
putExtra("searchKey",name)
94+
launchActivity(Intent(this@SearchActivity, SearchResultActivity::class.java).apply {
95+
putExtra("searchKey", name)
9596
})
9697
false
9798
}
@@ -107,8 +108,8 @@ class SearchActivity : BaseActivity<SearchPresenter>(), SearchContract.View {
107108
}
108109
//点击了搜索历史的某一个
109110
setOnItemClickListener { adapter, view, position ->
110-
launchActivity(Intent(this@SearchActivity,SearchResultActivity::class.java).apply {
111-
putExtra("searchKey",historyData[position])
111+
launchActivity(Intent(this@SearchActivity, SearchResultActivity::class.java).apply {
112+
putExtra("searchKey", historyData[position])
112113
})
113114
}
114115
}
@@ -136,14 +137,14 @@ class SearchActivity : BaseActivity<SearchPresenter>(), SearchContract.View {
136137
if (historyData.contains(it)) {
137138
//当搜索历史中包含该数据时 删除
138139
historyData.remove(it)
139-
}else if(historyData.size>=10){
140+
} else if (historyData.size >= 10) {
140141
//如果集合的size 有10个以上了,删除最后一个
141-
historyData.removeAt(historyData.size-1)
142+
historyData.removeAt(historyData.size - 1)
142143
}
143-
launchActivity(Intent(this@SearchActivity,SearchResultActivity::class.java).apply {
144-
putExtra("searchKey",it)
144+
launchActivity(Intent(this@SearchActivity, SearchResultActivity::class.java).apply {
145+
putExtra("searchKey", it)
145146
})
146-
historyData.add(0,it)//添加新数据到第一条
147+
historyData.add(0, it)//添加新数据到第一条
147148
this@SearchActivity.adapter.setNewData(historyData)//刷新适配器
148149
CacheUtil.setSearchHistoryData(Gson().toJson(historyData))//保存到本地
149150
}

app/src/main/java/me/hegj/wandroid/mvp/ui/activity/main/home/search/SearchResultActivity.kt

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -226,27 +226,22 @@ class SearchResultActivity : BaseActivity<SearchResultPresenter>(), SearchResult
226226
@Subscribe
227227
fun freshLogin(event: LoginFreshEvent) {
228228
//如果是登录了, 当前界面的数据与账户收藏集合id匹配的值需要设置已经收藏
229-
GlobalScope.launch {
230-
async {
231-
if (event.login) {
232-
event.collectIds.forEach {
233-
for (item in ariticleAdapter.data) {
234-
if (item.id == it.toInt()) {
235-
item.collect = true
236-
break
237-
}
238-
}
239-
}
240-
} else {
241-
//退出了,把所有的收藏全部变为未收藏
242-
for (item in ariticleAdapter.data) {
243-
item.collect = false
229+
if (event.login) {
230+
event.collectIds.forEach {
231+
for (item in ariticleAdapter.data) {
232+
if (item.id == it.toInt()) {
233+
item.collect = true
234+
break
244235
}
245236
}
246-
}.run {
247-
ariticleAdapter.notifyDataSetChanged()
237+
}
238+
} else {
239+
//退出了,把所有的收藏全部变为未收藏
240+
for (item in ariticleAdapter.data) {
241+
item.collect = false
248242
}
249243
}
244+
ariticleAdapter.notifyDataSetChanged()
250245
}
251246

252247
/**

0 commit comments

Comments
 (0)