我有一个片段,它将ViewPager与自定义视图和顶部栏中的微调器相结合。每次更改viewpager中的页面时,我都必须从db中更新微调器中的字符串。为此,在viewPager监听器的onPageSelected中,我启动了一个从db检索数据的线程,并通过runOnUiThread spinner的适配器进行更新。问题是为spinner的适配器调用的notifyDataSetChanged()落后于viewpager:它必须重建几个视图,但它有点滞后。
@Override
public void onPageSelected(final int pos) {
new Thread(new Runnable() {
@Override
public void run() {
...
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mSpinnerAdapter.notifyDataSetChanged();
}
});
}
}).start();
}
如何解决这个问题?可以在主线程上以最低优先级运行代码吗?
答案 0 :(得分:0)
首先,删除Thread,然后尝试删除runOnUiThread。
答案 1 :(得分:0)
你应该能够逃脱:
@Override
public void onPageSelected(final int pos) {
... // your hidden code
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mSpinnerAdapter.notifyDataSetChanged();
}
});
}
不需要新的线程。