gpt4 book ai didi

Android: fragment 停止后停止新线程

转载 作者:搜寻专家 更新时间:2023-11-01 08:51:31 32 4
gpt4 key购买 nike

我有一个 Fragment,我在其中以新 Thread 的运行方法运行动画代码。由于线程运行时间太长,我想在用户离开 fragment 时通过按下后退按钮或单击其他菜单项来停止线程。

我尝试在 onPause() 方法中使用 thread.stop、thread.destroy、wait、suspend 等,但没有任何帮助,它说 UnsupportedOperation 或 Object未锁定。并使应用程序崩溃。

此要求的原因是,如果我不终止线程,那么在尝试退出应用程序时,它不会正常关闭应用程序,并且会在多次按下后退按钮时崩溃。

请提出一个在创建和切换 fragment 时分别启动和终止线程的好方法。

public class SearchFragment extends Fragment {

private Thread mAnimationThread;
public SearchFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

final View rootView = inflater.inflate(R.layout.search_anim, container, false);

mAnimationThread = new Thread() {

//some code here
};

return rootView;
}

@Override
public void onResume() {
super.onResume();
Log.d("anim", "in resume");
Toast.makeText(getActivity().getApplicationContext() , "Resumed", Toast.LENGTH_LONG).show();
mAnimationThread.start();
} @Override
public void onPause() {
super.onPause();
Log.d("anim", "in pause");
Toast.makeText(getActivity().getApplicationContext(), "Paused",
Toast.LENGTH_LONG).show();

mAnimationThread.suspend();

}}

最佳答案

查看示例代码:

public class Test {
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(new MyThread());
thread.start();
Thread.sleep(5);
thread.interrupt();
}
}

class MyThread implements Runnable {

@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
System.out.println("Working.");
}
System.out.println("Interrupted.");
}
}

关于Android: fragment 停止后停止新线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22911683/

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