Лучший способ обнаружить закрытие/навигацию браузера к другой странице и действительно выходит из системы

Пример: получение удобочитаемого размера, например, 1 Гб

Память строк = bytesToHuman (totalMemory ())

/*************************************************************************************************
Returns size in bytes.

If you need calculate external memory, change this: 
    StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());
to this: 
    StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());        
**************************************************************************************************/
    public long totalMemory()
    {
        StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());   
        long   total  = (statFs.getBlockCount() * statFs.getBlockSize());
        return total;
    }

    public long freeMemory()
    {
        StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());
        long   free   = (statFs.getAvailableBlocks() * statFs.getBlockSize());
        return free;
    }

    public long busyMemory()
    {
        StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());   
        long   total  = (statFs.getBlockCount() * statFs.getBlockSize());
        long   free   = (statFs.getAvailableBlocks() * statFs.getBlockSize());
        long   busy   = total - free;
        return busy;
    }

Преобразование байтов в читаемый формат (например, 1 Мб, 1 Гб)

    public static String floatForm (double d)
    {
       return new DecimalFormat("#.##").format(d);
    }


    public static String bytesToHuman (long size)
    {
        long Kb = 1  * 1024;
        long Mb = Kb * 1024;
        long Gb = Mb * 1024;
        long Tb = Gb * 1024;
        long Pb = Tb * 1024;
        long Eb = Pb * 1024;

        if (size <  Kb)                 return floatForm(        size     ) + " byte";
        if (size >= Kb && size < Mb)    return floatForm((double)size / Kb) + " Kb";
        if (size >= Mb && size < Gb)    return floatForm((double)size / Mb) + " Mb";
        if (size >= Gb && size < Tb)    return floatForm((double)size / Gb) + " Gb";
        if (size >= Tb && size < Pb)    return floatForm((double)size / Tb) + " Tb";
        if (size >= Pb && size < Eb)    return floatForm((double)size / Pb) + " Pb";
        if (size >= Eb)                 return floatForm((double)size / Eb) + " Eb";

        return "???";
    }
8
задан Saravanan M 20 May 2009 в 15:02
поделиться

2 ответа

Похоже, в GWT есть событие именно для этого.

ClosingEvent .

Похоже, вам нужно реализовать ClosingHandler

5
ответ дан 5 December 2019 в 20:18
поделиться

Почему бы просто не создать очень недолговечный файл cookie сеанса, который сбрасывается при каждой загрузке страницы, а затем добавить файл cookie отслеживания. Когда пользователь возвращается, вы замечаете cookie отслеживания, но не cookie сеанса. Завершите сеанс и очистите все на этом этапе.

Блокировщики всплывающих окон предотвратят очистку вашего сеанса, когда они блокируют открытие окна onUnload, потому что это то, что используют спамеры.

2
ответ дан 5 December 2019 в 20:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: