kopia lustrzana https://github.com/ryukoposting/Signal-Android
Add stopwatches for a few possible pain points in MediaGallery.
rodzic
9aa517ad99
commit
fd01ee2a87
|
@ -24,6 +24,7 @@ import org.signal.core.util.logging.Log;
|
||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.mms.PartAuthority;
|
import org.thoughtcrime.securesms.mms.PartAuthority;
|
||||||
import org.thoughtcrime.securesms.util.MediaUtil;
|
import org.thoughtcrime.securesms.util.MediaUtil;
|
||||||
|
import org.thoughtcrime.securesms.util.Stopwatch;
|
||||||
import org.thoughtcrime.securesms.util.StorageUtil;
|
import org.thoughtcrime.securesms.util.StorageUtil;
|
||||||
import org.thoughtcrime.securesms.util.Util;
|
import org.thoughtcrime.securesms.util.Util;
|
||||||
import org.whispersystems.libsignal.util.guava.Optional;
|
import org.whispersystems.libsignal.util.guava.Optional;
|
||||||
|
@ -201,14 +202,20 @@ public class MediaRepository {
|
||||||
|
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
private @NonNull List<Media> getMediaInBucket(@NonNull Context context, @NonNull String bucketId) {
|
private @NonNull List<Media> getMediaInBucket(@NonNull Context context, @NonNull String bucketId) {
|
||||||
|
Stopwatch stopwatch = new Stopwatch("getMediaInBucket");
|
||||||
|
|
||||||
List<Media> images = getMediaInBucket(context, bucketId, Images.Media.EXTERNAL_CONTENT_URI, true);
|
List<Media> images = getMediaInBucket(context, bucketId, Images.Media.EXTERNAL_CONTENT_URI, true);
|
||||||
List<Media> videos = getMediaInBucket(context, bucketId, Video.Media.EXTERNAL_CONTENT_URI, false);
|
List<Media> videos = getMediaInBucket(context, bucketId, Video.Media.EXTERNAL_CONTENT_URI, false);
|
||||||
List<Media> media = new ArrayList<>(images.size() + videos.size());
|
List<Media> media = new ArrayList<>(images.size() + videos.size());
|
||||||
|
|
||||||
|
stopwatch.split("post fetch");
|
||||||
|
|
||||||
media.addAll(images);
|
media.addAll(images);
|
||||||
media.addAll(videos);
|
media.addAll(videos);
|
||||||
Collections.sort(media, (o1, o2) -> Long.compare(o2.getDate(), o1.getDate()));
|
Collections.sort(media, (o1, o2) -> Long.compare(o2.getDate(), o1.getDate()));
|
||||||
|
stopwatch.split("post sort");
|
||||||
|
|
||||||
|
stopwatch.stop(TAG);
|
||||||
return media;
|
return media;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ import org.thoughtcrime.securesms.mediasend.Media
|
||||||
import org.thoughtcrime.securesms.mediasend.MediaRepository
|
import org.thoughtcrime.securesms.mediasend.MediaRepository
|
||||||
import org.thoughtcrime.securesms.mediasend.v2.MediaCountIndicatorButton
|
import org.thoughtcrime.securesms.mediasend.v2.MediaCountIndicatorButton
|
||||||
import org.thoughtcrime.securesms.util.MappingAdapter
|
import org.thoughtcrime.securesms.util.MappingAdapter
|
||||||
|
import org.thoughtcrime.securesms.util.Stopwatch
|
||||||
import org.thoughtcrime.securesms.util.ViewUtil
|
import org.thoughtcrime.securesms.util.ViewUtil
|
||||||
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil
|
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil
|
||||||
import org.thoughtcrime.securesms.util.visible
|
import org.thoughtcrime.securesms.util.visible
|
||||||
|
@ -115,7 +116,11 @@ class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) {
|
||||||
viewStateLiveData.observe(viewLifecycleOwner) { state ->
|
viewStateLiveData.observe(viewLifecycleOwner) { state ->
|
||||||
bottomBarGroup.visible = state.selectedMedia.isNotEmpty()
|
bottomBarGroup.visible = state.selectedMedia.isNotEmpty()
|
||||||
countButton.setCount(state.selectedMedia.size)
|
countButton.setCount(state.selectedMedia.size)
|
||||||
|
|
||||||
|
val stopwatch = Stopwatch("mediaSubmit")
|
||||||
selectedAdapter.submitList(state.selectedMedia.map { MediaGallerySelectedItem.Model(it) }) {
|
selectedAdapter.submitList(state.selectedMedia.map { MediaGallerySelectedItem.Model(it) }) {
|
||||||
|
stopwatch.split("after-submit")
|
||||||
|
stopwatch.stop("MediaGalleryFragment")
|
||||||
if (state.selectedMedia.isNotEmpty()) {
|
if (state.selectedMedia.isNotEmpty()) {
|
||||||
selectedRecycler.smoothScrollToPosition(state.selectedMedia.size - 1)
|
selectedRecycler.smoothScrollToPosition(state.selectedMedia.size - 1)
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue