a
554325746@qq.com
2019-12-25 38492bbaa63586e2f4877da0eaa01a082fd565a6
app/src/main/java/com/basic/security/fragment/HomeFragment.java
@@ -1,5 +1,6 @@
package com.basic.security.fragment;
import android.content.Intent;
import android.os.SystemClock;
import android.view.View;
import android.widget.AbsListView;
@@ -8,11 +9,15 @@
import android.widget.Spinner;
import com.basic.security.R;
import com.basic.security.base.BaseApplication;
import com.basic.security.fragment.helper.HomeGridViewAdapter;
import com.basic.security.fragment.helper.HomePlayAlarmVideo;
import com.basic.security.manager.AlarmManager;
import com.basic.security.manager.SettingManager;
import com.basic.security.utils.MemoryUtil;
import com.basic.security.utils.RabbitMQConsumer;
import com.basic.security.utils.SocketClient;
import com.basic.security.utils.ThreadUtil;
import org.androidannotations.annotations.AfterInject;
import org.androidannotations.annotations.AfterViews;
@@ -27,12 +32,14 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@EFragment(R.layout.fragment_home)
public class HomeFragment extends HomePlayAlarmVideo {
    List<Map<String, String>> newSqliteAlarmList;
    public List<Map<String, String>> newSqliteAlarmList;
    @AfterInject
    void afterInject() {
@@ -64,27 +71,28 @@
        refreshGridView();
        while (true) {
            try{
                try {
                    if (1!=1) {
                        startNewSocketClient();
                        break;
                    } else {
                        List<SocketClient> socketClientListToRemove = new ArrayList<>();
                        for (SocketClient socketClient1 : socketClientList) {
                            if (System.currentTimeMillis() - socketClient1.lastUpdateTime > 1000*60*2) {
//                                socketClient1.closeSocket();
                                socketClient1.interrupt();
                                socketClientListToRemove.add(socketClient1);
                            }
                        }
                        socketClientList.removeAll(socketClientListToRemove);
                        if (socketClientList.size() == 0) {
                            startNewSocketClient();
                        }
                    }
                } catch (Exception e) {
                    System.out.println("pullAlarmDataList, " + e.getMessage());
                }
                RabbitMQConsumer.init();
//                try {
//                    if (1!=1) {
//                        startNewSocketClient();
//                        break;
//                    } else {
//                        List<SocketClient> socketClientListToRemove = new ArrayList<>();
//                        for (SocketClient socketClient1 : socketClientList) {
//                            if (System.currentTimeMillis() - socketClient1.lastUpdateTime > 1000*60*2) {
////                                socketClient1.closeSocket();
//                                socketClient1.interrupt();
//                                socketClientListToRemove.add(socketClient1);
//                            }
//                        }
//                        socketClientList.removeAll(socketClientListToRemove);
//                        if (socketClientList.size() == 0) {
//                            startNewSocketClient();
//                        }
//                    }
//                } catch (Exception e) {
//                    System.out.println("pullAlarmDataList, " + e.getMessage());
//                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
@@ -96,8 +104,8 @@
    @Override
    public void show() {
        for (AlarmListAdapter.ViewHolder viewHolder : viewHolderSet.keySet()) {
            if ("true".equals(viewHolder.alarm.get("videoPlaying"))) {
                viewHolder.alarm.put("videoPlaying", "false");
            if (AlarmManager.getAlarmPlaying(viewHolder.alarm)) {
                AlarmManager.putAlarmPlaying(viewHolder.alarm, false);
            }
        }
        refreshGridView();
@@ -117,33 +125,39 @@
        } catch (Exception e) {
            e.printStackTrace();
        }
        refreshGridViewLocker.lock();
        newSqliteAlarmList = AlarmManager.findAlarmList();
        if (newSqliteAlarmList != null) {
            final Map<String, Map<String, String>> sqliteAlarmListMap = new HashMap<>();
            sqliteAlarmListLock.lock();
            for (Map<String, String> alarm : sqliteAlarmList) {
                sqliteAlarmListMap.put(alarm.get("id"), alarm);
            }
            sqliteAlarmListLock.unlock();
            for (Map<String, String> alarm : newSqliteAlarmList) {
                alarm.put("videoPlaying", "false");
                Map<String, String> backupAlarm = sqliteAlarmListMap.get(alarm.get("id"));
                if (backupAlarm != null) {
                    if (!"true".equals(backupAlarm.get("videoPlayFinished"))) {
                        if ("true".equals(backupAlarm.get("videoPlaying"))) {
                            alarm.put("videoPlaying", backupAlarm.get("videoPlaying"));
        try {
            refreshGridViewLocker.lock();
            newSqliteAlarmList = AlarmManager.findAlarmList();
            if (newSqliteAlarmList != null) {
                final Map<String, Map<String, String>> sqliteAlarmListMap = new HashMap<>();
                sqliteAlarmListLock.lock();
                for (Map<String, String> alarm : sqliteAlarmList) {
                    sqliteAlarmListMap.put(alarm.get("id"), alarm);
                }
                sqliteAlarmListLock.unlock();
                for (Map<String, String> alarm : newSqliteAlarmList) {
                    //AlarmManager.putAlarmPlaying(alarm, false);
                    Map<String, String> backupAlarm = sqliteAlarmListMap.get(alarm.get("id"));
                    if (backupAlarm != null) {
                        if ("true".equals(backupAlarm.get("videoPlayFinished"))) {
                            if (AlarmManager.getAlarmPlaying(alarm)) {
                                //alarm.put("videoPlaying", backupAlarm.get("videoPlaying"));
                            }
                        }
                    }
                }
                sqliteAlarmListLock.lock();
                sqliteAlarmList.clear();
                sqliteAlarmList.addAll(newSqliteAlarmList);
                sqliteAlarmListLock.unlock();
                updateAlarmDataListInUIThread();
            }
            sqliteAlarmListLock.lock();
            sqliteAlarmList.clear();
            sqliteAlarmList.addAll(newSqliteAlarmList);
            sqliteAlarmListLock.unlock();
            updateAlarmDataListInUIThread();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            refreshGridViewLocker.unlock();
        }
        refreshGridViewLocker.unlock();
    }
    @UiThread
@@ -179,7 +193,7 @@
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                sqliteAlarmListLock.lock();
                for (Map<String, String> sqliteAlarm :  sqliteAlarmList) {
                    sqliteAlarm.put("videoPlaying", "false");
                    AlarmManager.putAlarmPlaying(sqliteAlarm, false);
                }
                sqliteAlarmListLock.unlock();
                try{
@@ -201,8 +215,51 @@
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {}
        });
        saveVideoPlayerCurrentTime();
//        executorService.execute(new Runnable() {
//            @Override
//            public void run() {
//                while (true) {
//                    try {
//                        AlarmManager.updateVideoUrl();
//                        SystemClock.sleep(1 * 1000);
//                    } catch (Exception e) {
////                        e.printStackTrace();
//                        System.out.println("HomeFragment.run " + e.getMessage());
//                    }
//                }
//            }
//        });
        executorService.execute(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        MemoryUtil.monitorMemory();
                        sendKeepLife();
                        ThreadUtil.threadCreateObserver();
                        SystemClock.sleep(3 * 1000);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }
    public static void sendKeepLife() {
        try {
            if (System.currentTimeMillis() - lastSendKeepLife > 2 * 1000) {
                Intent intent = new Intent("keepLife");
                intent.putExtra("message", "This is my message!");
                BaseApplication.getApplication().activity.sendBroadcast(intent);
                lastSendKeepLife = System.currentTimeMillis();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    static long lastSendKeepLife = 0;
    public ExecutorService executorService = Executors.newCachedThreadPool();
    @Click
    public void goto_top() {
        alarmListGridView.smoothScrollToPositionFromTop(0,0);