我的处理程序将每隔5分钟记录一次相机屏幕
最近,我发现处理程序一式两份运行。
处理程序在记录摄像机屏幕之前,创建记录文件名。
如果正常,15:00:00.mp4,15:05:00.mp4,15:10:00.mp4。
但目前我的州是15:00:00.mp4,15:02:15.mp4,15:05:00.mp4,15:07:15.mp4。
似乎重复使用相同的处理程序并执行2。
所以,我想如果有一个处理程序已经工作,删除旧的处理程序,执行新的处理程序。
然后,我认为解决相同的处理程序重复问题。是对吗?
总结一下,
1.在执行handler.sendEmptyMessage
之前,是否可以检查相同的处理程序是否正常工作?
目前我的来源。
private RecHandler mHandler = new RecHandler(this);
@Override
public void onCreate(Bundle savedInstanceState) {
...
mHandler.sendEmptyMessage(REQUEST_HANDLE_INIT_RECORD);
}
RecHandler.class
public class RecHandler extends Handler {
private final SoftReference<MainActivity> weak;
public RecHandler(MainActivity act) {
weak = new SoftReference<BlackEyeActivity>(act);
}
@Override
public void handleMessage(Message msg) {
MainActivity act = weak.get();
RecHandler mHandler = new RecHandler(act);
if (act != null) {
switch (msg.what) {
case REQUEST_HANDLE_INIT_RECORD:
initCapturing(); //init camera preview..
mHandler = new RecHandler(act);
mHandler.sendEmptyMessageDelayed(REQUEST_HANDLE_START_RECORD, 1000); //after 1 second, start REQUEST_HANDLE_START_RECORD.
this.removeMessages(REQUEST_HANDLE_HOLD_RECORD);
break;
case REQUEST_HANDLE_START_RECORD :
startRecording(); //start Recording.. record file 5 minute.
mHandler.sendEmptyMessageDelayed(REQUEST_HANDLE_HOLD_RECORD, 300000); //after 5 minute, start REQUEST_HANDLE_HOLD_RECORD.
this.removeMessages(REQUEST_HANDLE_INIT_RECORD);
break;
case REQUEST_HANDLE_HOLD_RECORD:
stopRecording();
mHandler.sendEmptyMessageDelayed(REQUEST_HANDLE_INIT_RECORD, 1000); //after 1 second, start REQUEST_HANDLE_INIT_RECORD.
this.removeMessages(REQUEST_HANDLE_START_RECORD);
break;
所以,我的处理程序如果总是记录,重复INIT
(1秒) - &gt; START
(5分钟) - &gt; HOLD
(1秒)
如果您知道如何检查相同的处理程序是否正常工作,以及如何删除正在运行的处理程序并仅运行新的处理程序。请给我建议。