【发布时间】:2011-06-02 00:03:57
【问题描述】:
我正在使用 Eclipse 开发一个 Android 应用程序来绘制蓝牙数据。主要组件是蓝牙活动、蓝牙活动创建的后台线程和绘图活动。
从 Logcat 中我知道,即使在我将活动从蓝牙活动切换到绘图活动之后,后台任务也会继续运行并产生蓝牙数据。
我在后台线程中找到了将 BluetoothData 写入 Logcat 的方法。所以我决定使用这种方法将数据数据传递给 Plotting Activity 的 plotData() 方法,如下所示:
PlottingActivity plottingActivity = new PlottingActivity();
plottingActivity.plotData(BluetoothData);
但它不适用于作为常规实例方法的 plotData() 调用。为什么?
它不起作用,因为使用这种调用 plotData() 的形式(可能是糟糕的形式),不会调用 PlottingActivity 活动的 onCreate() 方法。这至少会导致 redraw() 方法出现空指针异常,因此不会重绘或绘制绘图。
所以这就是它不起作用的原因。但是是什么让它起作用呢?感兴趣的?使 plotData() 成为静态方法。效果很好。实时剪辑。看起来像示波器。
但我收到了关于此解决方案的负面反馈(可能不是线程安全的或其他什么)我现在应该寻求替代解决方案。 [不是讨论]。只是使用后台线程和实例方法的真实、实用、明智的替代方案。
【问题讨论】:
标签: android multithreading static background handler