FirebaseRealtimeDatabase - Деятельность открывается автоматически, когда я редактирую записи RealtimeDatabase? - PullRequest
0 голосов
/ 08 мая 2019

Что-то меня смущает. По какой-то причине в моем приложении для фотографий я заметил, что всякий раз, когда я редактирую детей / записи в моем Firebase Realtime Database, из которого извлекаются названия мест для моих фотографий, предварительный просмотр фотографий Activity в моем приложении автоматически открывает фотографию чью запись я редактировал ...

Может быть, я действительно тупой, но я не понимаю, как мой код позволил этому случиться. Я выложу, как мне кажется, соответствующий код ниже.

В моем классе ImageAdapter 'onBindViewHolder - это код, который обрабатывает щелчок пользователя на изображении:

    final StorageReference mStorageRef = FirebaseStorage.getInstance().getReference();
    final StorageReference fullSizeImagesStoragePath = mStorageRef.child("images/" + getGridItem(position) + ".jpg");
    final Task getFullImageStorageUrl = fullSizeImagesStoragePath.getDownloadUrl();

    imageViewHolder.gridImageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            getFullImageStorageUrl.addOnCompleteListener(new OnCompleteListener<Uri>() {
                @Override
                public void onComplete(final @NonNull Task<Uri> task) {

                    Glide
                            .with(getActivity)
                            .asBitmap()
                            .load(thumbSizeImagesStoragePath)
                            .into(new SimpleTarget<Bitmap>() {
                                @Override
                                public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                                    Palette.from(resource).maximumColorCount(20).generate
                                            (new Palette.PaletteAsyncListener() {
                                                @Override
                                                public void onGenerated(@NonNull Palette palette) {
                                                    final Palette.Swatch dominantSwatch = palette.getDominantSwatch();
                                                    if (dominantSwatch != null) {

                                                        // This method finds and assigns the FireBase Database references, zeroes it down to the "Locations" item
                                                        // for the specific gridItem that was selected, and returns all the necessary color palette, url, and
                                                        // Location name info to the Photo-viewing activity.
                                                        mDatabaseImagesRef = FirebaseDatabase.getInstance().getReference().child("images_list");
                                                        DatabaseReference data = mDatabaseImagesRef.child(getGridItem(position).toString()).child("l");
                                                        data.addValueEventListener(new ValueEventListener() {
                                                            @Override
                                                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                                                Object locationKey = dataSnapshot.getValue();
                                                                String locationNameString = (String) locationKey;

                                                                int dominantSwatchRgb = dominantSwatch.getRgb();

                                                                Uri uri = task.getResult();
                                                                String url = uri.toString();
                                                                int objectToInt = (Integer) getGridItem(position);

                                                                Intent intent = new Intent(getActivity, PhotoDetailsActivity.class);
                                                                intent.putExtra("Image int", objectToInt);
                                                                intent.putExtra("imageURL", url);
                                                                intent.putExtra("paletteColor", dominantSwatchRgb);
                                                                intent.putExtra("photoLocationName", locationNameString);
                                                                getActivity.startActivity(intent);
                                                            }

                                                            @Override
                                                            public void onCancelled(@NonNull DatabaseError databaseError) {

                                                            }
                                                        });
                                                    }
                                                }
                                            });
                                }
                            });
                }
            });
        }
    });

Извините, я знаю, что потенциально много кода можно прочитать ... Я не был уверен, сколько или мало включить, поэтому решил просто вставить весь метод.

Чего я не понимаю, так это того, что весь приведенный выше код содержится в onClickListener, так как он вызывается или запускается автоматически после моего обновления Realtime Database? Разве его нельзя запускать только в том случае, если пользователь нажимает на изображение в списке фотографий?

Что также не понятно, так это то, что это происходит только в том случае, если редактируемые данные Realtime Database относятся к фотографии, которая в настоящее время отображается на экране в моем RecyclerView или была открыта недавно (поэтому я предполагаю, что она находится в кеш - хотя я и создал метод удаления кеша при выходе из предварительного просмотра фотографии ...).

Надеюсь, этот пост имеет смысл, я действительно хочу выяснить, почему он это делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...