如何在后台的两个 android 活动之间交换数据以通过蓝牙发送数据?

Posted

技术标签:

【中文标题】如何在后台的两个 android 活动之间交换数据以通过蓝牙发送数据?【英文标题】:How to exchange data between two android activities in background to send data via bluetooth? 【发布时间】:2017-06-21 22:02:05 【问题描述】:

我需要将数据从Activity A 传递到Activity B 并在后台向后传递,因为Activity A 具有初始化类的方法,该类正在管理蓝牙连接,我无法从Activity B 初始化该类,因为Activity A 中的方法已经对其进行了初始化。

我尝试制作我需要制作static 的方法,但是从静态方法我无法从我的蓝牙类中调用non-static 方法:

   public static void setup(String address) 
            bt = new Bluetooth(this, handler);
            outStringBuffer = new StringBuffer("");
            bt.startConn(address);
        //Java throws error that bt is non-static
   

所以我的问题:

    当它是non-static时,有没有办法从另一个类调用setup()? 如果答案是YES,怎么办?或者如果答案是NO如何在不调用任何方法的情况下传递数据。

请记住startActivityForResult()startActivity() 不会解决这个问题,因为我需要多次从Activity BA 发送数据,而Activity A 应该从我的蓝牙类中调用发送该数据的方法通过蓝牙传输数据。

P.S我找到了一种使用 ViewFlipper 的方法,但在我的情况下,这太复杂了,无法合并两个类。 而且我不能直接从Activity B 向蓝牙类发送数据,因为Activity A 已经打开了套接字,Java 会抛出无法启动活动之类的异常。

【问题讨论】:

你试图从活动中传递什么类型的数据 我要传递字符串变量 【参考方案1】:

好的,这很好...将字符串从活动 1 传递到活动 2,您需要

一种传递和检索它的方法,Intents

public void setUp (String address) 
/* start an intent to pass the string data*/
Intent intent = new Intent(GridViewActivity.this,       MovieDetailActivity.class);

/* use the intent object to pass string to another activity using putExtra method */

intent.putExtra("your string");
 start intent(intent);

然后在您的接收活动中使用 getStringExtra

final String original_title =     getIntent().getStringExtra("your string");

那么您可以使用 Intent 和 PutExra 以及 getIntent 和 getStringExtra 方法从活动中传递此变量

您可以在 Google 上搜索更多信息。使用意图从活动中传递数据。

【讨论】:

以上是关于如何在后台的两个 android 活动之间交换数据以通过蓝牙发送数据?的主要内容,如果未能解决你的问题,请参考以下文章

Android-活动(Activity)Intent

Android:如何在 2 个活动之间进行通信

Android Studio中如何在Activity跳转之间传递数据

当一个活动直接从一个通知启动时,你如何构建一个 Android 后台堆栈?

Android:如何在所有后台线程完成后启用按钮

一个界面如何用于不同的后台android任务?