0

memInf.availMem の値が最初の読み取り後に常に同じである理由がわかりません。例: アプリを起動したときの値は 0.441 GB ですが、タイマーを何度も更新した後は常に同じです。

値を更新するにはどうすればよいですか? ラムの使用が常に数分で同じということはあり得ません。

これは、値を更新するための実際のコードです(ただし、機能しません):

int startUp = 2000;     // millisecondi di attesa per fare partire il timer
    int periodo = 1000;     // millisecondi di attesa per la ripetizione del timer

    Timer timer = new Timer();      //timer

    //il metodo run viene eseguito ad ogni scadenza del timer
    timer.scheduleAtFixedRate(
            new TimerTask() {
                String c;
                public void run() {
                    c = String.valueOf(roundTreDecimali(memInfo.availMem / 1073741824.0)) + " GB";
                    getActivity().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            freeram.setText(c);
                            System.out.println(c);
                        }
                    });
                }
            },
            startUp, periodo
    );

PS: System.out.println(c) が毎秒 logcat に値を書き込むため、タイマーが機能します。

編集:コードの一部を追加しました

actManager = (ActivityManager) getActivity().getSystemService(getActivity().ACTIVITY_SERVICE);
    memInfo = new ActivityManager.MemoryInfo();
    actManager.getMemoryInfo(memInfo);
4

1 に答える 1

1

memInfが のインスタンスであると仮定すると、呼び出しごと更新するために呼び出すActivityManager.MemoryInfo必要があります。getMemoryInfo()ActivityManagermemInfrun()

于 2015-09-18T23:39:15.493 に答える