Я использую Eclipse для разработки приложения для Android для отображения данных Bluetooth. Основными компонентами являются действие Bluetooth, фоновый поток, созданный действием Bluetooth, и действие создания графиков.
Из Logcat я точно знаю, что фоновая задача продолжает выполняться и генерирует BluetoothData даже после того, как я переключаю действие с Bluetooth Activity на Plotting.
Я нашел метод в фоновом потоке, который записывает BluetoothData в Logcat. Поэтому я решил использовать этот метод для передачи данных в метод plotData () действия Plotting Activity следующим образом:
PlottingActivity plottingActivity = new PlottingActivity();
plottingActivity.plotData(BluetoothData);
Но это не работает с вызовом plotData (), являющимся обычным методом экземпляра. Почему?
Это не работает, потому что при такой форме (возможно, ужасной) вызова plotData () метод onCreate () действия PlottingActivity не вызывается. Это приводит, по крайней мере, к исключению с нулевым указанием для метода redraw (), поэтому plot не перерисовывается и не отрисовывается.
Так вот почему это не работает. Но что заставляет это работать? Заинтересовались? Создание plotData () статическим методом. Работает отлично. Клипы прямо в режиме реального времени. Выглядит как осциллограф.
Но я получил отрицательный отзыв об этом решении (может, оно не безопасно для потоков или что-то в этом роде). Теперь я должен попросить альтернативные решения. [НЕ ОБСУЖДЕНИЕ]. Просто реальные, практичные, разумные альтернативы использованию фонового потока и метода экземпляра.