Фатальный сигнал 11 (SIGSEGV), код 1, адрес ошибки 0xef38 в tid 17996 (pool-10-thread-) - PullRequest
0 голосов
/ 14 сентября 2018

У меня ошибка NDK . то есть

Фатальный сигнал 11 (SIGSEGV), код 1, адрес ошибки 0xef38 в тид 17996 (пул-10-нить -)

Что я делаю, это ниже:

Первый шаг: в просмотр активности : я вызываю функцию из докладчика и отправляю широту и долготу, чтобы найти адрес с помощью обратного геокодирования в класс докладчика : ниже находится функция

private  fun getAddressObservable(latitude: Double, longitude: Double): Observable<List<Address>> {

        val geoCodeObservable: Observable<List<Address>> = locationProvider.getReverseGeocodeObservable(latitude, longitude, 1)

        return geoCodeObservable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
    }


private fun getAddressObserver(): DisposableObserver<List<Address>> {
        return object : DisposableObserver<List<Address>>() {
            override fun onComplete() {
                Log.d(TAG, "Completed")
            }

            override fun onNext(t: List<Address>) {
                val address = t[0].getAddressLine(0)
                if (isSource) {
                    mainView.sourceAddress(address, latLng)
                } else {
                    mainView.destinationAddress(address, latLng)
                }
            }

            override fun onError(e: Throwable) {
                Log.d(TAG, e.message)
                if (isSource) {
                    mainView.sourceAddress(App.context.resources.getString(R.string.na), latLng)
                } else {
                    mainView.destinationAddress(App.context.resources.getString(R.string.na), latLng)
                }
            }

        }
    }

Теперь второй шаг: Когда я получил ответ от вышеуказанного API в sourceAddress and destionationAddress функциях просмотра .. Затем я вызываю другой RESTAPI

override fun sourceAddress(address: String?,latLng: LatLng) {
        sourceAddress= address.toString()
        tvAddSource.text=address
        tvAddSource.setTextColor(Utils.getColor(R.color.colorPrimary))
        sourceLatLng=latLng
        **mainActivityPresentator.getNearbyDriver(latLng.latitude,latLng.longitude,sourceAddress.toString())**
    }

Теперь ведущий звонит:

override fun getNearbyDriver(latitude: Double, longitude: Double, address: String) {
        getObservable(latitude,longitude,address).subscribeWith(getObserver())

    }

    private fun getObservable(latitude: Double, longitude: Double, address: String): Observable<NearbyDriversResponse> {
        return ApiClient.getClient().create(ApiInterface::class.java).getNearbyDriversRequest(preferenceAdapter.getUserModel()?.id, preferenceAdapter.getUserToken(), latitude, longitude, address)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
    }

    private fun getObserver(): DisposableObserver<NearbyDriversResponse> {
        return object : DisposableObserver<NearbyDriversResponse>() {
            override fun onComplete() {
                Log.d(TAG, "Completed")
            }

            override fun onNext(@NonNull response: NearbyDriversResponse) {
                response.status?.let {
                    when {
                        Objects.equals(it, ResponseMessages.RESPONSE_STATUS_SUCCESS) -> {
                            mainView.responseNearByDriver(response)
                        }
                        Objects.equals(it, ResponseMessages.RESPONSE_STATUS_FAILURE) -> {
                            response.message?.let {
                                mainView.failureMessage(it)
                            }

                        }
                        Objects.equals(it, ResponseMessages.RESPONSE_STATUS_ERROR) -> {
                            mainView.errorMessage(App.context.getString(R.string.invalid_token))
                        }
                        else -> {
                            mainView.errorMessage(App.context.getString(R.string.default_error_message))
                        }
                    }
                }
            }

            override fun onError(@NonNull e: Throwable) {
                e.message?.let {
                    Log.d(TAG,it)
                }
                mainView.apiFailure(App.context.getString(R.string.internet_connection_failure))
            }

        }
    }

Если я перестану звонить getNearByDrivers

mainActivityPresentator.getNearbyDriver(latLng.latitude,latLng.longitude,sourceAddress.toString())

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

Фатальный сигнал 11 (SIGSEGV), код 1, адрес ошибки 0xef38 в тид 17996 (пул-10-нить -)

Я сыт по горло. пытаюсь решить от 3 дней. все еще не решил

ПРИМЕЧАНИЕ: getAddress API вызывается в mMap.setOnCameraIdleListener()

Проблема решена в API> = нуга по android:hardwareAccelerated="false". Не работает для устройств леденец

...