【发布时间】:2016-05-21 17:28:52
【问题描述】:
我正在开发从蓝牙设备接收数据以在 viewpager 中分段的应用程序。 我的应用程序正在处理它
MainActivity 从蓝牙设备接收数据
MainActivity 的静态 String 值更改为来自蓝牙设备的数据
MainActivity 中viewpager 中fragment 的进度条将数据刷新为MainActivity 的数据(已更改整数)
-
当 MainActivity 的数据发生变化时,fragment 的进度条会刷新数据并查看
public class BalanceFragment extends Fragment{ public static String data = "0"; private String old = data; private ProgressBar progressBar; private TextView textView; private Handler handler; private MyThread myThread; public BalanceFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_balance, container, false); } @Override public void onStop() { try{ myThread.stop(); } catch (Exception e){ e.printStackTrace(); } } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); progressBar = (ProgressBar) view.findViewById(R.id.progressBar); textView = (TextView) view.findViewById(R.id.balanceProgressText); myThread = new MyThread(); myThread.run(); } @Override public void onResume() { myThread.run(); } class MyThread extends Thread{ @Override public void run() { while(true) { try { this.sleep(5000); MainActivity.println("test", "test"); } catch (Exception e){ e.printStackTrace(); } if (old != data){ old = data; progressBar.setProgress(Integer.valueOf(data)); textView.setText(data); progressBar.invalidate(); textView.invalidate(); } } } } }
但是......当我启动这个应用程序时,视图被冻结...... 我不知道为什么我的应用被冻结了
【问题讨论】:
-
您不应该从单独的线程更新视图,这可能是错误行为的原因。
标签: java android android-fragments bluetooth android-viewpager