当正在运行的线程满足条件时退出MainActivity

时间:2013-07-04 20:33:52

标签: android android-edittext

我的android程序中有两个挑战,如下所示,请帮助我。

  1. 假设我在MainActivity中启动了一个线程A,并根据是否存在某个条件 在线程A中满足,必须关闭整个应用程序。 (因为finish()仅在Activity中可用且无法从线程访问)
  2. 2.在MainActivity中我有一个EditText。我按下的每个字母都设置为通过蓝牙Socket传输,通过蓝牙StreamCOnnection到达PC。

    因此,我需要获取我在EditText中输入的每个字母(单个字符),存储在char变量中。 (它还应该考虑退格按钮,这意味着没有输入任何字母。)

    当用户在EditText中键入字母时,在MainActivity中初始化char变量(单个字母),并且正在运行的线程“A”将获取并将char变量的值发送到socket outputstream并清除char变量,以便可以存储新输入的字母以用于后续的套接字流发送。

    因此我对第2点的问题是,如何在考虑退格键的情况下获取EditBox的最后一个类型字符。

    我用Google搜索了很多内容并提到了类似帖子(Link1)& Link2,但我无法成功实施。

    (PS:我很抱歉我写了详细信息,而不是粘贴Snippets,因为我的程序有点大,可能会混淆我的正确问题)

2 个答案:

答案 0 :(得分:1)

1)finish()是Activity对象的一个​​函数。如果线程是活动的子类,它可能会失败。如果Thread有对Activity的引用,它可以调用activityReference.finish()。 Finish()是以编程方式结束活动的唯一方法。

2)使用TextWatcher并将其添加到EditText。只要输入一个字符,这就会告诉你。您可以弄清楚新数据是什么并进行处理。

答案 1 :(得分:1)

我的建议是:

1)如果满足条件,则使用Handler对UI线程进行回调。从那里,你可以调用finish()方法。

2)我将在onKeyListener上实现Edittext。在那个听众中,你可以听到你想要的任何按键(字符或其他)。

希望有所帮助。