我试图在每1分钟后调用我的takepicture()方法。所以,我尝试使用处理程序类,然后尝试在其run函数中调用我的方法。但是,当我尝试进行逐步调试时,它根本不会进入run方法。任何人都可以建议我做错了什么?我试图从我的片段中调用它。
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mFile = new File(getActivity().getExternalFilesDir(null), "pic.jpg");
final Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
Log.d("HandlerThread","This is from the HandlerThread");
takePicture();
handler.postDelayed(this, 60000);
}
};
}
答案 0 :(得分:2)
您永远不会调用任何运行Runnable
的方法。您只在run()
函数中指定了它的行为。
要启动Runnable
,请调用handler.postDelayed(r, 0);
只是一个信息:请注意,您的Handler
仍然与主Thread
相关联。如果您想在单独的主题上运行,请参阅this answer和this one。
答案 1 :(得分:2)
试试这个:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mFile = new File(getActivity().getExternalFilesDir(null), "pic.jpg");
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
Log.d("HandlerThread","This is from the HandlerThread");
takePicture();
}
}, 60000);
}
而不是在run方法中定义handler.postDelayed。我刚刚更改了主线程中的调用。
如果它能解决您的问题,请将其标记为答案。
答案 2 :(得分:0)
您应该初始调用以启动处理程序功能。
即,handler.post(r);