1
1
只需阅读日志:d您还没有调用lopper.prepare()。 如果我是正确的,您应该用looper.prepare()和looper.loop()包装AlertDialog代码。 所以看起来:
|
2
1
你可能得到一个
解决方案是将else语句包装为:
|
3
1
此日志中的签出注释: Using Application context everywhere? 另外,如果用actiiivtyname.getApplicationContext()替换getApplicationContext(),您会得到什么错误? |
4
1
这有点问题。 首先,您永远不会接触到您创建的任何线程中的任何UI元素。 您需要使用线程处理程序进行水化处理: http://developer.android.com/reference/android/os/Handler.html 它们的工作方式是,在正常的UI线程中初始化它们。(调用onCreate()方法的线程。) 处理程序是线程安全的对象,可以扩展到线程之间的通信。 所以,在onCreate()上:
然后,通过run()方法,使用bundle和message对象向它发送消息。 http://developer.android.com/reference/android/os/Bundle.html 和 http://developer.android.com/reference/android/os/Message.html 我喜欢这样做,保持事情干净的方法是扩展线程类以添加一点一致性…
如果您想稍微花哨一点,可以将UI代码和工作线程代码完全分开。 如果您的后台任务不会花费很长时间,那么您可以像前面描述的那样运行onWithRead()。 您可能还希望使用AsyncTask,请参见: http://developer.android.com/reference/android/os/AsyncTask.html 以下是他们页面中的一个示例,其用法相当简单:
但最终,如果用户在任务运行时改变方向,这些方法并不完美。(或者如果您的活动因任何其他原因而死亡。) 在这种情况下,您需要设置一个服务: http://developer.android.com/reference/android/app/Service.html |
lfox · 如果列中不存在某个值,则停止代码执行 2 年前 |
juztcode · 在C++中尝试捕获-创建了多少个对象 6 年前 |
Novic · 结果不明确时如何使用tryCatch 6 年前 |
Jacob Nelson · 多次尝试表达式,直到在R中成功 6 年前 |
Mert Yücel · 如何在布尔方法中引发三个异常? 6 年前 |
Jatt · 捕获从setInterval内部引发的异常 6 年前 |