我有一个活动,它调用具有Thread.Sleep调用的函数和处理程序,它们对从蓝牙连接接收的数据进行进一步处理。
我想在调用处理程序时显示加载进度条动画。从蓝牙设备完全处理数据可能需要几分钟到几个小时。
因此,我在XML文件中声明了一个进度条,并在数据处理完成后将进度视图设置为“View.GONE”。
问题是在调用我的处理程序之前会显示加载动画。调用处理程序后,加载动画将挂起,并在完成所有处理程序调用后释放。下面是我正在使用的XML和类文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom"
android:background="@drawable/bg"
android:orientation="vertical"
android:paddingBottom="40dp"
android:paddingLeft="20dp"
android:paddingRight="20dp">
<RelativeLayout
android:id="@+id/loadingPanel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" >
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true" />
</RelativeLayout>
</LinearLayout>
以下是java文件源代码的链接。
https://drive.google.com/file/d/0B7CcUOV3YOH7NUtNSXB1Nk5KbE0/view?usp=sharing
“MainDefine.penController.OpenFileTobyte(mFolderName,mFileName);” in function“downLoadDIPage”触发类中定义的处理程序。
我认为问题是,处理程序函数正在UI线程上执行,因此阻止了加载进度条。我已经尝试在新线程上启动从处理程序调用的函数,但这并没有解决我的问题。
我遇到了这个问题,并且是阻止我的产品发布的唯一问题。任何人都可以帮我解决这个问题。
提前致谢。