Browse Source

时时刷新数据

jieyu 4 năm trước cách đây
mục cha
commit
ee09fee07a

+ 9 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/chart/ChartActivity.kt

@@ -17,11 +17,13 @@ import cn.muchinfo.rma.global.isBlankString
 import cn.muchinfo.rma.global.toPercentage
 import cn.muchinfo.rma.view.autoWidget.utils.NumberUtils
 import cn.muchinfo.rma.view.base.BaseActivity
+import cn.muchinfo.rma.view.base.chart.KChartTools.Companion.debounceOnMainThread
 import cn.muchinfo.rma.view.base.chart.old.timeCharts.KChartView
 import cn.muchinfo.rma.view.base.chart.old.timeCharts.TimeChartView
 import cn.muchinfo.rma.view.base.future.trade.GoodsTradeActivity
 import cn.muchinfo.rma.view.eventbus.QuoteMessageEvent
 import com.blankj.utilcode.util.ActivityUtils
+import com.blankj.utilcode.util.TimeUtils
 import com.desfate.chart.GridChart
 import com.desfate.chart.event.ITouchEventNotify
 import com.desfate.chart.event.ITouchEventResponse
@@ -202,11 +204,17 @@ class ChartActivity : BaseActivity<ChartViewModel>() , View.OnClickListener {
         })
 
         timeChartView.setTimeChartListener {
+            // 这里做个防抖
             // 重新刷新
-            viewModel.queryTimeChart()
+            if(TimeUtils.getNowMills() - requestTime > 3000){
+                viewModel.queryTimeChart()
+                requestTime = TimeUtils.getNowMills()
+            }
         }
     }
 
+    private var requestTime = TimeUtils.getNowMills()
+
     override fun onClick(v: View?) {
         when(v?.id){
             R.id.trade_rly -> {

+ 42 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/chart/KChartTools.kt

@@ -1,7 +1,13 @@
 package cn.muchinfo.rma.view.base.chart
 
+import android.os.Handler
+import android.os.Looper
 import cn.muchinfo.rma.global.data.chart.HistoryDatas
 import com.desfate.chart.util.MathUtil
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
 
 /**
  * 用于处理K线图的一些数据
@@ -32,4 +38,40 @@ class KChartTools {
         }
         return date
     }
+
+    companion object{
+        /**
+         * 消抖行为
+         *
+         */
+        fun debounceSuspend(delayMs: Long = 500L, coroutineScope: CoroutineScope, f: suspend CoroutineScope.() -> Unit): () -> Unit {
+            var job: Job? = null
+            return {
+                job?.cancel()
+                job = coroutineScope.launch {
+                    delay(delayMs)
+                    job = null
+                    f()
+                }
+            }
+        }
+
+        /**
+         * 主线程的消抖行为
+         */
+        fun <T> debounceOnMainThread(delayMs: Long = 500L, callback: (T) -> Unit): (T) -> Unit {
+            val handle = Handler(Looper.getMainLooper())
+            var runnable: Runnable? = null
+            return {t->
+                runnable?.let {
+                    handle.removeCallbacks(it)
+                }
+                runnable = Runnable {
+                    callback(t)
+                }
+                handle.postDelayed(runnable!!, delayMs)
+            }
+        }
+    }
+
 }

+ 5 - 5
RMA/app/src/main/java/cn/muchinfo/rma/view/base/chart/old/timeCharts/TimeChartView.java

@@ -164,11 +164,11 @@ public class TimeChartView extends FrameLayout implements ITouchEventResponse {
         if (timeChartData == null || timeChartData.getHistoryDatas() == null) return; // 没有数据
         HistoryDatas lastData = timeChartData.getHistoryDatas().get(timeChartData.getHistoryDatas().size() - 1);
         HistoryDatas nowData = lastData;
-//        if(new ChartDataAdapter().checkSameMin(nowData.getTime(), lastData.getTime())){ // 不是同一分钟 则重新请求
-        timeChartData.getHistoryDatas().add(lastDate);
-//        }else{
-//            if(timeChartListener != null) timeChartListener.onTimeRepairFail();
-//        }
+        if(new ChartDataAdapter().checkSameMin(nowData.getTime(), lastData.getTime())){ // 不是同一分钟 则重新请求
+            timeChartData.getHistoryDatas().add(lastDate);
+        }else{
+            if(timeChartListener != null) timeChartListener.onTimeRepairFail();
+        }
         setData(timeChartData);
 //        if(timeChartData.getHistoryDatas().get(timeChartData.getHistoryDatas().size() - 1).getTime())
     }