Как использовать AsyncTask для получения потребления оперативной памяти в режиме реального времени - PullRequest
0 голосов
/ 25 июня 2018

У меня есть фрагмент кода, который я хочу запустить в цикле, чтобы я мог получить данные в реальном времени из этого фрагмента.

Как я могу использовать AsyncTask для получения потребления оперативной памяти в режиме реального времени, так как я не хочу, чтобы мой поток пользовательского интерфейса был занят этим.

ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
ActivityManager activityManager = (ActivityManager) getActivity().getSystemService(Context.ACTIVITY_SERVICE);
activityManager.getMemoryInfo(memInfo);
String TotalRam = String.valueOf(memInfo.totalMem);
int totaLram = Integer.parseInt(TotalRam);
String freeRam = String.valueOf(memInfo.availMem);
int freRAm = Integer.parseInt(freeRam);

1 Ответ

0 голосов
/ 25 июня 2018

сначала оберните ваши коды оперативной памяти в метод.

 int getRam(){

    ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
    ActivityManager activityManager = (ActivityManager) getActivity().getSystemService(Context.ACTIVITY_SERVICE);
    activityManager.getMemoryInfo(memInfo);
    String TotalRam = String.valueOf(memInfo.totalMem);
    int totaLram = Integer.parseInt(TotalRam);
    String freeRam = String.valueOf(memInfo.availMem);
    return  Integer.parseInt(freeRam);

}

Затем создайте внутренний класс для вашей пользовательской asyncTask. Вы можете использовать цикл for в doInBackground (), а затем периодически вызывать метод onProgressUpdate ().

public class AsyncRamInfo extends AsyncTask<Void, Integer, Void>{


 @Override
    protected Void doInBackground(Void... voids) {

        try {
            for (; ; ) { //loop forever
                onProgressUpdate(getRam());
                Thread.sleep(5000);
            }
        } catch (InterruptedException e) {
             return null;    
        } 
    }

    @Override
    protected void onProgressUpdate(Integer... values) {

        Integer ram = values[0];
        //display the ram on the UI thread.
        textViewRam.setText(" RAM = "+ ram);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...