Android应用程序中的杂散线程

时间:2012-02-26 20:57:48

标签: android eclipse

我刚刚开始为Android开发。我试图创建一个使用SurfaceView绘制一些简单形状的应用程序,但无法根据菜单事件使其工作(表面始终无效),所以我决定实现线程。现在问题是我无法弄清楚如何阻止运行的杂散线程。我在调试模式下启动了应用程序,然后选择了启动线程的菜单项。然后我点击模拟器界面上的后退按钮退出应用程序。但我在线程上的断点继续受到打击。所以我通过在模拟器中的应用程序列表中单击它返回到应用程序,并选择命令来停止线程。但它没有检测到线程正在运行 - 就像它是一个不同的应用程序实例。

我的主要问题下面有许多微妙的问题,“我应该如何最可靠地处理Android应用程序中的线程关闭?”

  1. 我可以访问原始实例吗?
  2. 我回去后应该获得原始实例吗?
  3. 从应用程序菜单中选择它而不是启动调试器会影响原始实例可见性吗?
  4. 可以/应该终止活动/申请吗?
  5. 调试器(Eclipse)可以强制它以某种方式停止而不重置整个设备吗?
  6. SurfaceView是否需要线程才能运行而不是在菜单事件期间尝试锁定上下文?
  7. 我看了Close application and launch home screen on Android ,但它表明不应该终止申请,所以我不知道该怎么办。

1 个答案:

答案 0 :(得分:0)

听起来你正试图以一种奇怪的方式使用线程。在Android中,如果您正在使用UI,则不应该使用vanilla java线程。相反,您应该使用AsyncTask。如果您尝试从非UI线程访问UI,Android运行时会向您抱怨。相反,您需要在处理线程和活动(实际管理UI的位置)之间来回传递消息。这是通过使用信使和处理程序完成的,但过程变得复杂。相反,更好的解决方案是使用AsyncTask模型,它允许您在后台执行无缝更新UI的操作。这通常用于网络应用程序,您可以在任务中下载某些信息,然后相应地更新UI。因此,请尝试阅读一些AsyncTask教程并找出它可以为您做的所有很酷的事情(在Android中处理线程化头痛的问题主要是通过使用这个模型来避免,实际上你应该永远不必去杀死一个线程)。