首页 > 解决方案 > 致命信号 11 (SIGSEGV),代码 1,tid 17996 中的故障地址 0xef38 (pool-10-thread-)

问题描述

我正面临NDK错误。那是

致命信号 11 (SIGSEGV),代码 1,tid 17996 中的故障地址 0xef38 (pool-10-thread-)

我在做什么如下:

第一步:视图活动中:我正在从演示者调用函数并发送纬度,经度以通过演示者类中的反向地理编码找到地址:以下是函数

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)
                }
            }

        }
    }

现在第二步:当我在sourceAddress and destionationAddress 视图函数 中得到上述 API 的响应时.. 然后我调用另一个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,tid 17996 中的故障地址 0xef38 (pool-10-thread-)

我受够了。试图从 3 天解决。还是没有解决

注意:getAddressAPI 被调用mMap.setOnCameraIdleListener()

在 API>= nougat 中解决的问题由android:hardwareAccelerated="false". 不适用于棒棒糖设备

标签: androidkotlinthreadpoolrx-androidandroid-mvp

解决方案


推荐阅读