我正在编写一个 android 应用程序,其中我有 1 个按钮和 1 个进度条作为 UI 元素。
这个应用程序的主要目的是当用户按下这个按钮时,它必须创建一个包含所有自定义格式的电话簿联系人的数据库,这意味着我正在阅读联系人数据库并根据我的要求进行操作。
所以我使用SQLiteOpenHelper进行数据库操作。我编写了一个方法downloadPhonebook()来执行所有必需的操作。我编写了应用程序,当用户按下按钮时,我使进度条可见并调用此方法。
在这种情况下,用户界面在单击按钮后挂起,并在 15 秒后显示带有强制关闭和等待按钮的对话框。
为了避免这种情况,我尝试了以下机制。
-> 广播按钮点击消息并调用方法downloadPhonebook()。这里没有用,出现同样的问题。
-> 使用 Thread 和 AsyncTask 调用此方法,这里我遇到了 Runtime 异常,例如Couldn't create Handler inside a Thread, Looper.prepare not called。我尝试调用 Looper.prepare() 和 Looper.loop() 甚至发生异常。
-> 我尝试使用 Android 服务和广播意图,同样的问题 UI 再次挂起。
如果有人遇到这个问题或知道解决方案或知道如何使用 Looper.prepare 和 Looper.loop,请回复我。谢谢。