You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Automotive应用搜索框输入后点击崩溃问题求助

Android Automotive应用SearchTemplate软键盘点击崩溃问题

问题现象

  • 应用使用SearchTemplate组件,搜索框输入字符后,点击搜索框区域或放大镜图标,应用直接崩溃
  • 点击搜索框的清空X按钮无异常;搜索框为空时点击仅会获取焦点,不会崩溃

错误日志

D/InputMethodManager: showSoftInput() view=androidx.car.app.activity.renderer.surface.TemplateSurfaceView{f2a6fbc VFE...... .F...... 0,0-1024,768 #7f0900ae app:id/template_view_surface aid=1073741824} flags=0 reason=SHOW_SOFT_INPUT
E/CarApp.Act: Connection lost
    android.os.DeadObjectException
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(BinderProxy.java:571)
        at androidx.car.app.activity.renderer.IRendererCallback$Stub$Proxy.onCreateInputConnection(IRendererCallback.java:297)
        at androidx.car.app.activity.BaseCarAppActivity$2.lambda$registerRendererCallback$1(BaseCarAppActivity.java:178)
        at androidx.car.app.activity.BaseCarAppActivity$2$$ExternalSyntheticLambda6.invoke(Unknown Source:4)
        at androidx.car.app.activity.ServiceDispatcher.fetch(ServiceDispatcher.java:116)
        at androidx.car.app.activity.BaseCarAppActivity$2.lambda$registerRendererCallback$2$androidx-car-app-activity-BaseCarAppActivity$2(BaseCarAppActivity.java:176)
        at androidx.car.app.activity.BaseCarAppActivity$2$$ExternalSyntheticLambda4.onCreateInputConnection(Unknown Source:4)
        at androidx.car.app.activity.renderer.surface.TemplateSurfaceView.onCreateInputConnection(TemplateSurfaceView.java:160)
        at android.view.inputmethod.InputMethodManager.startInputInner(InputMethodManager.java:1928)
        at android.view.inputmethod.InputMethodManager.restartInput(InputMethodManager.java:1858)
        at androidx.car.app.activity.renderer.surface.TemplateSurfaceView.onStartInput(TemplateSurfaceView.java:210)
        at androidx.car.app.activity.BaseCarAppActivity$2.lambda$onStartInput$7$androidx-car-app-activity-BaseCarAppActivity$2(BaseCarAppActivity.java:213)
        at androidx.car.app.activity.BaseCarAppActivity$2$$ExternalSyntheticLambda8.run(Unknown Source:2)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7870)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
E/CarApp.Act: Remote exception (host render service)
    android.os.DeadObjectException
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(BinderProxy.java:571)
        at androidx.car.app.activity.renderer.surface.ISurfaceListener$Stub$Proxy.onSurfaceDestroyed(ISurfaceListener.java:181)
        at androidx.car.app.activity.renderer.surface.SurfaceHolderListener.lambda$notifySurfaceDestroyed$2$androidx-car-app-activity-renderer-surface-SurfaceHolderListener(SurfaceHolderListener.java:103)
        at androidx.car.app.activity.renderer.surface.SurfaceHolderListener$$ExternalSyntheticLambda1.invoke(Unknown Source:4)
        at androidx.car.app.activity.ServiceDispatcher.lambda$dispatchNoFail$1(ServiceDispatcher.java:90)
        at androidx.car.app.activity.ServiceDispatcher$$ExternalSyntheticLambda1.invoke(Unknown Source:2)
        at androidx.car.app.activity.ServiceDispatcher.fetchNoFail(ServiceDispatcher.java:153)
        at androidx.car.app.activity.ServiceDispatcher.dispatchNoFail(ServiceDispatcher.java:89)
        at androidx.car.app.activity.renderer.surface.SurfaceHolderListener.notifySurfaceDestroyed(SurfaceHolderListener.java:102)
        at androidx.car.app.activity.renderer.surface.SurfaceHolderListener.surfaceDestroyed(SurfaceHolderListener.java:78)
        at android.view.SurfaceView.notifySurfaceDestroyed(SurfaceView.java:1981)
        at android.view.SurfaceView.updateSurface(SurfaceView.java:1157)
        at android.view.SurfaceView.setVisibility(SurfaceView.java:345)
        at androidx.car.app.activity.BaseCarAppActivity.lambda$onStateChanged$3$androidx-car-app-activity-BaseCarAppActivity(BaseCarAppActivity.java:399)
        at androidx.car.app.activity.BaseCarAppActivity$$ExternalSyntheticLambda3.run(Unknown Source:4)
        at androidx.car.app.utils.ThreadUtils.runOnMain(ThreadUtils.java:39)
        at androidx.car.app.activity.BaseCarAppActivity.onStateChanged(BaseCarAppActivity.java:385)
        at androidx.car.app.activity.BaseCarAppActivity.$r8$lambda$dw3rK9QfgsUWuk2bAICsaK01RZs(Unknown Source:0)
        at androidx.car.app.activity.BaseCarAppActivity$$ExternalSyntheticLambda5.onChanged(Unknown Source:4)
        at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133)
        at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:151)
        at androidx.lifecycle.LiveData.setValue(LiveData.java:309)
        at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50)
        at androidx.car.app.activity.CarAppViewModel.lambda$onError$0$androidx-car-app-activity-CarAppViewModel(CarAppViewModel.java:185)
        at androidx.car.app.activity.CarAppViewModel$$ExternalSyntheticLambda2.run(Unknown Source:4)
        at androidx.car.app.utils.ThreadUtils.runOnMain(ThreadUtils.java:39)
        at androidx.car.app.activity.CarAppViewModel.onError(CarAppViewModel.java:177)
        at androidx.car.app.activity.ServiceDispatcher.fetch(ServiceDispatcher.java:119)
        at androidx.car.app.activity.BaseCarAppActivity$2.lambda$registerRendererCallback$2$androidx-car-app-activity-BaseCarAppActivity$2(BaseCarAppActivity.java:176)
        at androidx.car.app.activity.BaseCarAppActivity$2$$ExternalSyntheticLambda4.onCreateInputConnection(Unknown Source:4)
        at androidx.car.app.activity.renderer.surface.TemplateSurfaceView.onCreateInputConnection(TemplateSurfaceView.java:160)
        at android.view.inputmethod.InputMethodManager.startInputInner(InputMethodManager.java:1928)
        at android.view.inputmethod.InputMethodManager.restartInput(InputMethodManager.java:1858)
        at androidx.car.app.activity.renderer.surface.TemplateSurfaceView.onStartInput(TemplateSurfaceView.java:210)
        at androidx.car.app.activity.BaseCarAppActivity$2.lambda$onStartInput$7$androidx-car-app-activity-BaseCarAppActivity$2(BaseCarAppActivity.java:213)
        at androidx.car.app.activity.BaseCarAppActivity$2$$ExternalSyntheticLambda8.run(Unknown Source:2)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7870)
E/CarApp.Act:     at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
I/CarApp.Act: Unbinding from ComponentInfo
E/CarApp.Act: InputConnectionListener has not been received yet. Canceling the input
D/InputMethodManager: showSoftInput() view=androidx.car.app.activity.renderer.surface.TemplateSurfaceView{f2a6fbc GFE...... ......I. 0,0-1024,768 #7f0900ae app:id/template_view_surface aid=1073741824} flags=0 reason=SHOW_SOFT_INPUT
W/IInputConnectionWrapper: beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper: getTextAfterCursor on inactive InputConnection
D/EGL_emulation: app_time_stats: avg=73260.20ms min=85.08ms max=219285.45ms count=3
W/IInputConnectionWrapper: getSelectedText on inactive InputConnection
W/IInputConnectionWrapper: endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper: beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper: endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper: beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper: endBatchEdit on inactive InputConnection

相关代码

onGetTemplate() 实现

return SearchTemplate.Builder(
            object : SearchCallback {
                override fun onSearchTextChanged(searchText: String) {
                    if(searchText.isNotEmpty()){
                        searchCompleted()
                        getAddressFromName(searchText)
                        doSearch(searchText)
                    }
                }
                override fun onSearchSubmitted(searchTerm: String) {
                    mIsSearchComplete = true
                    searchCompleted()
                    doSearch(searchTerm)
                    
                }
            })
            .setShowKeyboardByDefault(true)
            .setItemList(mItemList!!)
            .build()

doSearch() 实现

fun doSearch(searchText: String) {
        val builder = ItemList.Builder()
        places.clear()

        if (searchText.isEmpty()) {
            mItemList = withNoResults(builder)?.build();
        }
        if (!isInternetConnection) {
            CarToast.makeText(
                carContext,
                "Ingen internett tilgang",
                CarToast.LENGTH_LONG
            )
                .show()
            return
        }

        val destinations = getAddressFromName(searchText)

        if(destinations.isNotEmpty()){
            destinations.forEach{
                val addressLine = it.getAddressLine(0)
                builder.addItem(
                    Row.Builder()
                        .setTitle(addressLine)
                        .setOnClickListener { onClickSearch(it) }
                        .build())
            }
            mItemList = builder.build()
            invalidate()
            return
        }
    }

已尝试的排查步骤

  • 清空onSearchTextChanged和onSearchSubmitted方法体,排除业务逻辑导致崩溃的可能,但问题仍复现

问题场景截图

  • 输入字符后的界面:在搜索框中输入一个字符
  • 点击搜索框后崩溃的界面:点击搜索框后应用崩溃

内容的提问来源于stack exchange,提问作者Anniken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:01:06