android блокировка основного потока после запутывания приложения - PullRequest
0 голосов
/ 01 февраля 2020

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

это мои коды:

код модели класса:

 class Codes(
        @SerializedName("id")
        var id: String?,
        @SerializedName("title")
        var title: String?,
        @SerializedName("text")
        var text: String?,
        @SerializedName("codes")
        var codes: String?,
        @SerializedName("date")
        var date: String?,
        @SerializedName("codeId")
        var codeId: String?,
        @SerializedName("point")
        var point: Int,
        @SerializedName("name")
        var name: String?,
        @SerializedName("family")
        var family: String?,
        @SerializedName("image")
        var image: String?,
        @SerializedName("jensiat")
        var jensiat: Int
    ) : Parcelable {
        constructor(parcel: Parcel) : this(
            parcel.readString(),
            parcel.readString(),
            parcel.readString(),
            parcel.readString(),
            parcel.readString(),
            parcel.readString(),
            parcel.readInt(),
            parcel.readString(),
            parcel.readString(),
            parcel.readString(),
            parcel.readInt()
        ) {
        }

        override fun writeToParcel(parcel: Parcel, flags: Int) {
            parcel.writeString(id)
            parcel.writeString(title)
            parcel.writeString(text)
            parcel.writeString(codes)
            parcel.writeString(date)
            parcel.writeString(codeId)
            parcel.writeInt(point)
            parcel.writeString(name)
            parcel.writeString(family)
            parcel.writeString(image)
            parcel.writeInt(jensiat)
        }

        override fun describeContents(): Int {
            return 0
        }

        companion object CREATOR : Parcelable.Creator<Codes> {
            override fun createFromParcel(parcel: Parcel): Codes {
                return Codes(parcel)
            }

            override fun newArray(size: Int): Array<Codes?> {
                return arrayOfNulls(size)
            }
        }
    }

фрагмент кода (где я получаю список и показываю в рециркуляции):

 viewModel.getAllCodes(SORT_POPULAR).observe(this, Observer {
                    myList = it
                    Utils.customAnimation(recycler, animation = Techniques.Landing)
                    codeAdapter = CodeAdapter(context!!, it) { codeId, position ->
                        Log.i("LOG","code id:$codeId and position is: $position")
                        var transaction = activity!!.supportFragmentManager.beginTransaction()
                        lastPosition = position
                        var detailCodeFragment = DetailCodeFragment {
                            codeAdapter.changePoint(it)
                        }
                        var selectedCode: Codes? = null
                        for (i in 0 until myList.size) {
                            var id = myList[i].codeId
                            if (id == codeId) {
                                selectedCode = myList[i]
                            }
                        }
                        var bundle = Bundle()
                        bundle.putParcelable("codes", selectedCode)
                        bundle.putInt("position", lastPosition)
                        detailCodeFragment.arguments = bundle
                        Utils.customAnimation(
                            activity!!.findViewById(R.id.main_fragment_frame),
                            animation = Techniques.SlideInRight
                        )
                        transaction.add(R.id.main_fragment_frame, detailCodeFragment)
                        transaction.addToBackStack(null)
                        transaction.commit()
                    }
                    recycler.adapter = codeAdapter
                    loadingFragme.visibility = View.GONE
                })
            }

правила защиты:

 -keepattributes Signature

    # For using GSON @Expose annotation
    -keepattributes *Annotation*

    # Gson specific classes
    -keep class sun.misc.Unsafe { *; }
    #-keep class com.google.gson.stream.** { *; }

    # Application classes that will be serialized/deserialized over Gson
    -keep class com.google.gson.examples.android.model.** { *; }

    ##---------------End: proguard configuration for Gson ----------
    -keepclassmembers class * implements android.os.Parcelable {
          public static final android.os.Parcelable$Creator *;
       }
    -keepclassmembers class * implements android.os.Parcelable {
      public static final <fields>;
    }
...