Recycler View Adapter中的计算,会影响性能吗?

时间:2018-11-25 11:36:58

标签: android performance android-recyclerview android-adapter

我怀疑如果在Android的“回收器”视图中设置数据之前执行计算会导致性能低下吗?

例如,我接收数据列表作为服务器响应,例如:

  • A人的销售目标:50,销售目标:10
  • B人等的销售目标:60,销售目标:15。

,我必须在回收站视图中将其与百分比一起显示, 因此,我在Android端进行了计算,以在设置适配器之前将这些销售目标转换为百分比。因此,在设置第一个数据之前,我通过执行以下操作来计算百分比:(10/50)* 100,这将为我提供所有列表数据的20%,依此类推。那么此计算是否会降低Android的加载性能,或者如果我在服务器端计算百分比并获得响应本身的百分比会更好,这样我就可以简单地设置它而无需进行任何计算,但这会影响响应时间?

所以我在服务器响应时间和Android处理时间之间感到困惑。

2 个答案:

答案 0 :(得分:1)

该百分比似乎对安全性不敏感,您可以在客户端进行计算。如果您想节省处理数据的时间,请尝试将一些数据填充到回收者视图的适配器中,以使其对用户可见,然后执行一些异步操作  后台任务来计算数据并更新视图。

答案 1 :(得分:0)

您应该使用AsyncTask。它将在后台线程中执行任务,并将相应地更新UI。 下面是一个简单的示例:

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
 protected Long doInBackground(URL... urls) {
     int count = urls.length;
     long totalSize = 0;
     for (int i = 0; i < count; i++) {
         totalSize += Downloader.downloadFile(urls[i]);
         publishProgress((int) ((i / (float) count) * 100));
         // Escape early if cancel() is called
         if (isCancelled()) break;
     }
     return totalSize;
 }

 protected void onProgressUpdate(Integer... progress) {
     setProgressPercent(progress[0]);
 }

 protected void onPostExecute(Long result) {
     showDialog("Downloaded " + result + " bytes");
 }
}

要运行AsyncTask

new DownloadFilesTask(). execute(param1, param2, param3);

取消任务调用

cancel();