如果在处理过程中单击,Android emulator将崩溃
我一直在开发一个android应用程序,并在模拟器上进行测试。此应用程序的某些部分需要一些处理时间,例如登录,可能需要10秒。如果应用程序正在处理登录,并且我单击了emulator屏幕上的任意位置,这将导致应用程序崩溃->将弹出一个强制关闭/等待窗口,即使我选择等待,此登录过程也永远不会完成如果在处理过程中单击,Android emulator将崩溃,android,android-asynctask,emulation,xamarin.android,Android,Android Asynctask,Emulation,Xamarin.android,我一直在开发一个android应用程序,并在模拟器上进行测试。此应用程序的某些部分需要一些处理时间,例如登录,可能需要10秒。如果应用程序正在处理登录,并且我单击了emulator屏幕上的任意位置,这将导致应用程序崩溃->将弹出一个强制关闭/等待窗口,即使我选择等待,此登录过程也永远不会完成 我想知道还有其他人遇到过这种情况吗?如何避免用户在处理过程中单击并使程序崩溃?或者在真正的手机上这不是问题 谢谢 编辑:这确实是一个UI线程问题,我正在使用Mono for Android来编写这个应用程序
我想知道还有其他人遇到过这种情况吗?如何避免用户在处理过程中单击并使程序崩溃?或者在真正的手机上这不是问题 谢谢 编辑:这确实是一个UI线程问题,我正在使用Mono for Android来编写这个应用程序,我使用介绍的方法来解决我的问题 编辑: 这是LOGCAT消息
1-11 00:38:49.165 W/WindowManager( 59): Key dispatching timed out sending to BadumnaAndroidApi1.BadumnaAndroidApi1/badumnaandroidapi1.Activity1
01-11 00:38:49.165 W/WindowManager( 59): Previous dispatch state: {{KeyEvent{action=1 code=66 repeat=0 meta=0 scancode=28 mFlags=8} to Window{44ed87d0 BadumnaAndroidApi1.BadumnaAndroidApi1/badumnaandroidapi1.Activity1 paused=false} @ 1326241690617 lw=Window{44ed87d0 BadumnaAndroidApi1.BadumnaAndroidApi1/badumnaandroidapi1.Activity1 paused=false} lb=android.os.BinderProxy@4508a900 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44ed87d0 BadumnaAndroidApi1.BadumnaAndroidApi1/badumnaandroidapi1.Activity1 paused=false}}}
01-11 00:38:49.175 W/WindowManager( 59): Current dispatch state: {{null to Window{44ed87d0 BadumnaAndroidApi1.BadumnaAndroidApi1/badumnaandroidapi1.Activity1 paused=false} @ 1326242329174 lw=Window{44ed87d0 BadumnaAndroidApi1.BadumnaAndroidApi1/badumnaandroidapi1.Activity1 paused=false} lb=android.os.BinderProxy@4508a900 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44ed87d0 BadumnaAndroidApi1.BadumnaAndroidApi1/badumnaandroidapi1.Activity1 paused=false}}}
01-11 00:38:49.276 I/Process ( 59): Sending signal. PID: 316 SIG: 3
01-11 00:38:49.276 I/dalvikvm( 316): threadid=3: reacting to signal 3
01-11 00:38:49.485 I/dalvikvm( 316): Wrote stack traces to '/data/anr/traces.txt'
01-11 00:38:49.485 I/Process ( 59): Sending signal. PID: 59 SIG: 3
01-11 00:38:49.485 I/dalvikvm( 59): threadid=3: reacting to signal 3
01-11 00:38:49.595 I/dalvikvm( 59): Wrote stack traces to '/data/anr/traces.txt'
01-11 00:38:49.616 I/Process ( 59): Sending signal. PID: 114 SIG: 3
01-11 00:38:49.616 I/dalvikvm( 114): threadid=3: reacting to signal 3
01-11 00:38:49.625 I/dalvikvm( 114): Wrote stack traces to '/data/anr/traces.txt'
01-11 00:38:49.636 I/Process ( 59): Sending signal. PID: 107 SIG: 3
01-11 00:38:49.645 I/dalvikvm( 107): threadid=3: reacting to signal 3
01-11 00:38:49.655 I/dalvikvm( 107): Wrote stack traces to '/data/anr/traces.txt'
01-11 00:38:49.673 I/Process ( 59): Sending signal. PID: 254 SIG: 3
01-11 00:38:49.865 I/dalvikvm( 254): threadid=3: reacting to signal 3
01-11 00:38:49.875 I/Process ( 59): Sending signal. PID: 246 SIG: 3
01-11 00:38:49.906 I/dalvikvm( 246): threadid=3: reacting to signal 3
01-11 00:38:50.085 I/Process ( 59): Sending signal. PID: 177 SIG: 3
01-11 00:38:50.115 I/dalvikvm( 177): threadid=3: reacting to signal 3
01-11 00:38:50.285 I/Process ( 59): Sending signal. PID: 221 SIG: 3
01-11 00:38:50.345 I/dalvikvm( 221): threadid=3: reacting to signal 3
01-11 00:38:50.495 I/Process ( 59): Sending signal. PID: 169 SIG: 3
01-11 00:38:50.575 I/dalvikvm( 169): threadid=3: reacting to signal 3
01-11 00:38:50.695 I/Process ( 59): Sending signal. PID: 185 SIG: 3
01-11 00:38:50.735 I/dalvikvm( 185): threadid=3: reacting to signal 3
01-11 00:38:50.905 I/Process ( 59): Sending signal. PID: 111 SIG: 3
01-11 00:38:50.905 I/dalvikvm( 111): threadid=3: reacting to signal 3
01-11 00:38:51.065 I/dalvikvm( 111): Wrote stack traces to '/data/anr/traces.txt'
01-11 00:38:51.065 I/Process ( 59): Sending signal. PID: 205 SIG: 3
01-11 00:38:51.185 I/dalvikvm( 205): threadid=3: reacting to signal 3
01-11 00:38:51.275 I/Process ( 59): Sending signal. PID: 194 SIG: 3
01-11 00:38:51.405 I/dalvikvm( 194): threadid=3: reacting to signal 3
01-11 00:38:51.485 I/Process ( 59): Sending signal. PID: 155 SIG: 3
01-11 00:38:51.605 I/dalvikvm( 155): threadid=3: reacting to signal 3
01-11 00:38:51.685 I/Process ( 59): Sending signal. PID: 149 SIG: 3
01-11 00:38:51.875 I/dalvikvm( 149): threadid=3: reacting to signal 3
01-11 00:38:51.885 I/Process ( 59): Sending signal. PID: 115 SIG: 3
01-11 00:38:51.916 I/dalvikvm( 115): threadid=3: reacting to signal 3
好的,很可能会因为这个繁重的处理而导致UI线程挂起,但是我可能在没有看到任何代码提示的情况下就挂起了。您可能将繁重的内容放在一个后台线程中,该线程与当前运行的GUI线程分离 幸运的是,Android在这方面可以帮助你。假设(因为问题中没有足够的细节)您通过向服务器发出web请求来登录应用程序。当用户按login时,您希望在后台线程中执行所有腿部工作时显示某种处理消息 看看本文,特别是AsyncTask示例 您可以看到,doInBackground()是完成所有繁重工作的地方,postExecute()再次在UI线程中运行,您需要根据刚才发生的事情的结果更新UI。例如,用户成功登录或登录时出错
我可以继续很长一段时间,但这是有据可查的。谷歌自己的另一篇好文章可以在这里找到好的,你可能会因为这个繁重的处理而导致UI线程挂起,但是我可能会在没有看到任何代码提示的情况下离开。您可能将繁重的内容放在一个后台线程中,该线程与当前运行的GUI线程分离 幸运的是,Android在这方面可以帮助你。假设(因为问题中没有足够的细节)您通过向服务器发出web请求来登录应用程序。当用户按login时,您希望在后台线程中执行所有腿部工作时显示某种处理消息 看看本文,特别是AsyncTask示例 您可以看到,doInBackground()是完成所有繁重工作的地方,postExecute()再次在UI线程中运行,您需要根据刚才发生的事情的结果更新UI。例如,用户成功登录或登录时出错
我可以继续很长一段时间,但这是有据可查的。谷歌自己的另一篇好文章可以在这里找到LogCat上有关于这种崩溃的可能原因的信息吗?你确定这是崩溃吗?也许你只是在UI线程中进行处理,而你的应用程序挂起(因此,带有强制关闭选项的窗口出现)。感谢@user1234567,我对android比较陌生,所以你的意思是我不能在UI线程中进行处理,否则会发生这种情况?@harism日志信息会更新。。正如user1234567所描述的那样,它看起来确实像一个线程问题。。我将更改处理线程,看看它是如何运行的LogCat上有关于这种崩溃的可能原因的信息吗?你确定这是崩溃吗?也许你只是在UI线程中进行处理,而你的应用程序挂起(因此,带有强制关闭选项的窗口出现)。感谢@user1234567,我对android比较陌生,所以你的意思是我不能在UI线程中进行处理,否则会发生这种情况?@harism日志信息会更新。。正如user1234567所描述的那样,它看起来确实像一个线程问题。。我会改变处理线程,看看它是如何处理的谢谢你,我认为你的观点很好,因为我正在做一些繁重的处理,我正在将一个windows.NET应用程序转换为android,以前有一个后台工作人员在后台处理这个问题,所以我认为这可能是问题所在。谢谢你提供的所有信息!我要试试看!谢谢,这是一个很好的答案,这正是我的问题所在。然而,我正在使用Mono for Android来编写应用程序(因为我从来没有提到过,所以你不可能知道),在我的例子中使用AsyncTask可能有点复杂。我已经使用中介绍的方法解决了我的问题,只针对那些也使用mono并且有相同问题的人。非常感谢你!!干杯谢谢你,我认为你说得很好,因为我正在做一些繁重的处理,我正在将一个windows.NET应用程序转换为android,以前有一个后台工作人员在后台处理这个问题,所以我认为这可能是问题所在。谢谢你提供的所有信息!我要试试看!谢谢,这是一个很好的答案,这正是我的问题所在。然而,我正在使用Mono for Android来编写应用程序(因为我从来没有提到过,所以你不可能知道),在我的例子中使用AsyncTask可能有点复杂。我已经使用中介绍的方法解决了我的问题,只针对那些也使用mono并且有相同问题的人。非常感谢你!!干杯