gpt4 book ai didi

java - 如何在 Android 中的某个时间段后执行任务?

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:10 25 4
gpt4 key购买 nike

我创建了一个包含大量 fragment 的应用程序。在我的最后一个 fragment 中,我尝试在 10 秒后在 LogCat 上打印一些内容。但它对我不起作用。

这是我的 Fragment

public class StepTwentyTwoFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.step22_fragment, container, false);

testMethod();
return v;
}

public static StepTwentyTwoFragment newInstance() {

StepTwentyTwoFragment f = new StepTwentyTwoFragment();
Bundle b = new Bundle();

f.setArguments(b);

return f;
}


@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
Activity a = getActivity();
if(a != null) a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}

public void testMethod(){
SystemClock.sleep(10000);
Log.d("PPP : ","456");
}

}

实际上我想在最后一个 fragment 启动 10 秒后打印这个“PPP”。但它会随着应用程序中某些 fragment 的加载而开始打印。

对此有什么想法吗?

谢谢。

最佳答案

您不应该 hibernate ,也不应该在不需要时创建线程。 Android 的主线程是基于事件循环的,您可以安排事件/代码在未来的某个时间点执行。

最简单的选择是使用

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.step22_fragment, container, false);
Runnable delayedTask = new Runnable() {
@Override
public void run() {
Log.d("PPP : ","456");
}
};
v.postDelayed(delayedTask, 10000);
return v;
}

如果您没有View,您也可以创建自己的处理程序。

private static final Handler mainThreadHandler = new Handler(Looper.getMainLooper());
public void testMethod(){
Runnable delayedTask = new Runnable() {
@Override
public void run() {
Log.d("PPP : ","456");
}
};
mainThreadHandler.postDelayed(delayedTask, 10000);
}

关于java - 如何在 Android 中的某个时间段后执行任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37435427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com