Шаблон MVP - вопрос дизайна (приложение для мониторинга памяти) - PullRequest
0 голосов
/ 19 марта 2019

Я создаю небольшое приложение и хочу отслеживать используемые ресурсы (периодически отслеживать использование памяти приложением (каждые 60 секунд) и сохранять его в базе данных SQLite в виде отчета истории).
затем я хочу отобразить сохраненную информациюв обзоре диаграмм, который демонстрирует использование памяти за выбранный период времени (последний час, последние 24 часа, последние 7 дней, последние 30 дней).
следующий код вычисляет использование памяти

public class ResourcesUsageRunnable implements Runnable {
    //var running to start run the thread or stop it by set its value to false
    private static volatile boolean running = true;

    private Context context;

    public ResourcesUsageRunnable(Context context) {
        this.context = context;
    }

    @Override
    public void run() {
        while (running) {
            //calculate memory usage using Runtime instance
            final Runtime runtime = Runtime.getRuntime();
            final long usedMemInMB = (runtime.totalMemory() - runtime.freeMemory()) / 1048576L;
            final long maxHeapSizeInMB = runtime.maxMemory() / 1048576L;
            final long availHeapSizeInMB = maxHeapSizeInMB - usedMemInMB;
            final long totalMemory=runtime.totalMemory()/ 1048576L;
            final long freeMemory=runtime.freeMemory()/ 1048576L;
            //create instance from MemoryMonitoring to set the memory usage value and store it in SQLite table
            MemoryMonitoring memoryMonitoring = new MemoryMonitoring(totalMemory, freeMemory, usedMemInMB, maxHeapSizeInMB, availHeapSizeInMB, Common.getTimeInSecond());


            //insert into SQLite MemoryMonitoring table
            new InsertAsyncTask(context).execute(memoryMonitoring);
            //Log.d("TTTTTTTTTTT",memoryMonitoring.getFreeMemory()+"");
            //sleep the thread for 60 second
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    //start working
    public static void startThread() {
        running = true;
    }
    //stop working
    public static void stopThread() {
        running = false;
    }

}

Моя проблема заключается в том, как реализовать этот процесс вычисления памяти, отображения в диаграмме и сохранения в SQLite в дизайне шаблонов MVP. Я новичок в MVP, в этой задаче меня немного смутило

...