Android 我的应用程序&x27;她被吊死了

Android 我的应用程序&x27;她被吊死了,android,Android,我正在编写一个android应用程序,其中有1个按钮和1个进度条作为UI元素 该应用程序的主要目的是,当用户按下此按钮时,它必须创建一个数据库,其中包含自定义格式的所有通讯录联系人,这意味着我正在阅读联系人数据库并根据自己的要求进行操作 因此,我使用SQLiteOpenHelper进行数据库操作。我编写了一个方法来执行所有必需的操作。我编写了一个应用程序,这样当用户按下按钮时,我就可以看到进度条并调用这个方法 在这种情况下,在15秒后单击按钮并显示带有强制关闭和等待按钮的对话框后,UI被挂起 为

我正在编写一个android应用程序,其中有1个按钮和1个进度条作为UI元素

该应用程序的主要目的是,当用户按下此按钮时,它必须创建一个数据库,其中包含自定义格式的所有通讯录联系人,这意味着我正在阅读联系人数据库并根据自己的要求进行操作

因此,我使用SQLiteOpenHelper进行数据库操作。我编写了一个方法来执行所有必需的操作。我编写了一个应用程序,这样当用户按下按钮时,我就可以看到进度条并调用这个方法

在这种情况下,在15秒后单击按钮并显示带有强制关闭等待按钮的对话框后,UI被挂起

为了避免这种情况,我尝试了以下机制

->广播按钮单击消息并调用方法downloadPhonebook()。这里没有用,同样的问题发生了

->使用线程和AsyncTask调用此方法,在这里我得到了运行时异常,如无法在线程内创建处理程序,Looper.prepare未调用。我尝试调用Looper.prepare()和Looper.loop(),即使出现异常

->我尝试了Android服务和广播意图,同样的问题再次被挂起


如果有人遇到这个问题,或者知道解决方法,或者知道如何使用Looper.prepare和Looper.loop,请回复我。谢谢。

工作流应该是这样的:在主类中创建处理程序,在sql helper类中添加处理程序,在创建时将处理程序从主类传递到sql helper类。在主类的单独线程上运行下载,下载完成后,调用
yourHandler.sendEmptyMessage(0)
。您应该重写主类中的
处理程序.handleMessage
(我不确定方法的确切名称)。您还可以发送消息以更新进度,有关详细信息,请参阅

我的应用程序的SQL部分没有问题。它按要求运行,问题是UI被挂起,即使我正在从接收方调用阻塞方法。我只是说从主类传递一个处理程序(它将在那里等待消息),然后从另一个线程调用发送消息。我在一个服务中尝试了这一点,在接收到接收方中的按钮单击消息时,我正在向处理程序发布相同的消息,在那里,我调用我的方法。在这里,我也遇到了UI挂起问题。什么服务,你说“我正在编写一个android应用程序,其中我有一个按钮和一个进度条作为UI元素。”那么,当你点击按钮时,你如何传递处理程序,处理程序定义在哪里?在我的问题中,我明确提到(最后一个),为了解决UI挂起问题,我使用Android服务和广播接收器处理UI活动中的按钮单击。