【问题标题】:ANDROID: Use running thread from parent activity in child activityANDROID:在子活动中使用父活动中的运行线程
【发布时间】:2012-04-29 05:44:07
【问题描述】:

我正在向市场上的免费 Android 游戏“先驱”添加蓝牙功能。我在 Main 活动中嵌入的线程中正确设置了套接字。我为我的 ConnectThread(扩展线程)创建了另一个 java 文件,它将在手机之间发送玩家的坐标。我查看了 Service、AysncTask 和 Handler。除了处理程序之外,我认为没有任何人会帮助我更多。

以下任何一项都可以使其正常工作。

如何在子活动中使用我在父活动中连接的蓝牙套接字(在嵌入式线程中创建)?

如果未在子活动中初始化,我如何从 ConnectThread 向子活动发送数据?基本上如何从线程中调用子活动中的公共方法?

有没有办法将我在父活动中连接的套接字传递给子活动?

【问题讨论】:

    标签: android multithreading sockets android-activity bluetooth


    【解决方案1】:

    在父活动中或(更好)在应用程序类中放置一个静态(类)变量(为此创建您自己的应用程序类,该应用程序类派生自 Android 应用程序类,并记住将其放在您的清单中 @ 987654321@)。将套接字分配给这个静态变量。子活动可以从那里拿起它。因为它是静态的,所以当您的活动被破坏时,垃圾收集器不会将其删除,因此请确保您关闭它并在完成后将变量分配为 null。

    【讨论】:

    • 对于一个简单的问题来说,这似乎是一个过于复杂的解决方案,但它确实有效。我最终在子类中创建了一个静态套接字变量并将其设置为 BT 套接字,然后在子类中运行其他代码。我现在有同步问题。如果两个用户同时按下播放键,它就会起作用。否则,一个用户会崩溃,而另一个用户会在没有信息的情况下玩游戏。
    • 感谢您接受我的回答。我不知道你为什么认为这过于复杂。活动来来去去,你想要一些更持久的东西。 Application 类是持久的,因此您可以在其中存储可从所有活动访问的引用。或者您可以使用标准的 Java Singleton 模式来执行此操作。您的同步问题是什么?
    猜你喜欢
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2012-06-10
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多