我的应用程序的用户界面被挂起
我正在编写一个android应用程序,其中我有1 按钮和1 进度条作为UI元素。我的应用程序的用户界面被挂起
这个应用程序的主要目的是,当用户按下这个按钮,它创建一个包含在自定义格式的所有电话簿联系人数据库,意味着我读联系人数据库,并操纵了我的要求。
因此,我正在使用SQLiteOpenHelper进行数据库操作。我写了一个方法下载电话簿()执行所有必需的操作。我写了一个应用程序,当用户按下按钮时,我正在使进度条可见并调用此方法。
在这种情况下,UI点击按钮和显示用力关闭和一个对话框等待按钮,15秒后后悬挂。
为了避免这种情况,我尝试了以下机制。
- >广播按钮点击消息,并且呼叫的方法downloadPhonebook()。这里没有用,发生同样的问题。
- >使用一个线程和AsyncTask来调用这个方法,在这里我得到了运行时异常,如无法在一个线程内创建Handler,Looper.prepare不叫。我试着调用Looper.prepare()和Looper.loop(),甚至发生异常。
- >我试图与Android服务和广播的意图,又同样的问题UI忌用。
如果有人遇到这个问题,或者知道溶液或知道如何使用Looper.prepare和Looper.loop请回复我。谢谢。
的工作流程应该是这样的:在主类中创建一个处理程序,在您的SQL助手类添加一个处理程序,在创建它的主类传递处理程序到SQL辅助类。在下载准备就绪后,从您的主课程的单独线程运行下载,请致电yourHandler.sendEmptyMessage(0)
。你应该在主类中覆盖Handler.handleMessage
(我不确定方法的确切名称)。您也可以发送邮件到更新进度,了解Andoid Handler了解更多信息
我的应用程序的SQL部分没有错。它正在按需要做,即使我从接收器调用阻塞方法,问题也被UI挂起。 –
我只是说从你的主类(它将等待消息)传递一个处理程序,并且调用从另一个线程发送消息。 – mihail
我在一个服务中试过这个,在收件人收到按钮点击消息后,我将其发送给Handler,在那里我打电话给我的方法。在这里,我也遇到UI挂起问题。 –
您可以发布您的代码? – Araw