我有一个主要活动的片段。我正在尝试在用户移动时使用用户GPS位置更新文本框。我目前拥有它,因此每次您恢复片段时都会对其进行更新,但是我希望它每10秒左右自动发生一次。
我目前正在尝试使用runOnUiThread,它不会导致我的应用崩溃,但似乎什么也没做。
在片段内:
@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
TextView newText = getView().findViewById(R.id.wText);
newText.setText(getStringCoordinates);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
newText.setText(getStringCoordinates);
}
});
}
答案 0 :(得分:0)
也许这是可行的
public class c_Thread_Update_Fragment extends Thread {
int i =0;
c_Thread_Update_Fragment(FragmentManager fm, ViewPager vp)
{
this.fragmentManager =fm;
this.mViewpager =vp;
}
@Override
public void run() {
while(true)
{
f.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
yourfragmentclass.updateData(i);
}
});
i++;
sleep(1000);
}
}
public static void setFragment(Fragment f){
f =f;
}
}
public static void update (xxx){}
setFragment(f)
并传递当前片段。答案 1 :(得分:0)
尝试使用处理程序,类似这样的事情应该起作用
private Handler myHandler;
private static final int DELAY = 10000;
@Override
protected void onResume() {
super.onResume();
myHandler = new Handler(Looper.getMainLooper());
checkAgain();
}
private void checkAgain() {
myHandler.postDelayed(()-> checkGps(),DELAY);
}
private void checkGps() {
//do stuff here
checkAgain();
}
@Override
protected void onStop() {
super.onStop();
myHandler.removeCallbacksAndMessages(null);
myHandler = null;
}
基本上,它每10秒向主线程发送一条消息以检查gps
该代码可能是错误的,因为我将其写在脑海中,但它应该为您提供一个良好的开端