princekin-f / EasyFloat

🔥 EasyFloat:浮窗从未如此简单(Android可拖拽悬浮窗口,支持页面过滤、自定义动画,可设置单页面浮窗、前台浮窗、全局浮窗,浮窗权限按需自动申请...)
Apache License 2.0
3.32k stars 429 forks source link

多进程应用使用会出现 Only the original thread that created a view hierarchy can touch its views #232

Open chenqunming opened 1 year ago

chenqunming commented 1 year ago

Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:11683) at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:2620) at android.view.ViewRootImpl.invalidateChild(ViewRootImpl.java:2615) at android.view.View.setFlags(View.java:16769) at android.view.View.setVisibility(View.java:12110) at com.lzf.easyfloat.core.FloatingWindowHelper.setVisible(SourceFile:3) at com.lzf.easyfloat.core.FloatingWindowManager.visible(SourceFile:1) at com.lzf.easyfloat.core.FloatingWindowManager.visible$default(SourceFile:2) at com.lzf.easyfloat.utils.LifecycleUtils.setVisible(SourceFile:1) at com.lzf.easyfloat.utils.LifecycleUtils.checkShow(SourceFile:7) at com.lzf.easyfloat.utils.LifecycleUtils.access$checkShow(SourceFile:1) at com.lzf.easyfloat.utils.LifecycleUtils$setLifecycleCallbacks$1.onActivityResumed(SourceFile:3) at android.app.Application.dispatchActivityResumed(Application.java:423) at android.app.Activity.dispatchActivityResumed(Activity.java:1461) at android.app.Activity.onResume(Activity.java:2034)

chenqunming commented 1 year ago
        if (EasyFloat.isShow(EASY_FLOAT_TAG)) {
            EasyFloat.dismiss(EASY_FLOAT_TAG)
        }
        EasyFloat.with(MyApplication.instance)
            .setShowPattern(ShowPattern.ALL_TIME)
            .setLayout(R.layout.view_float_receive)
            // 设置吸附方式,共15种模式,详情参考SidePattern
            .setSidePattern(SidePattern.RESULT_TOP)
            // 设置浮窗的标签,用于区分多个浮窗
            .setTag(EASY_FLOAT_TAG)
            .setGravity(Gravity.CENTER_HORIZONTAL)
            // 设置浮窗是否可拖拽
            .setDragEnable(false)
            .registerCallback 

image

EasyFloat.with是Application,ShowPattern.ALL_TIME一直显示(不分前后台) else Builder(LifecycleUtils.getTopActivity() ?: activity) mTopActivity有可能是之前页面被销毁activity,是不是会导致这个这问题?