美文网首页Android 成长笔记
Android 避免多次显示同一个 toast

Android 避免多次显示同一个 toast

作者: 赵者也 | 来源:发表于2018-01-10 10:02 被阅读14次

直接上干货,这是一个全局的 Toast 工具类使用起来简单方便,还能满足一次只显示一条 toast 的要求:

import android.widget.Toast;

/**
 * Created by toby on 18-1-9.
 */
class GlobalToast {

    private static Toast toast = null;

    @SuppressLint("ShowToast")
    public static void show(CharSequence text, int toastDuration){
        try{
            toast.getView().isShown();
            toast.setText(text);
        } catch (Exception e) {
            toast = Toast.makeText(MyApplication.globalContext(), text, toastDuration);
        }
        toast.show();
    }

    public static void show(CharSequence text) {
        show(text, Toast.LENGTH_SHORT);
    }
}

其中 MyApplication.globalContext() 可以参考我的这篇文章 Android 获取全局 Context 对象

使用实例:

    @Override
    protected void onResume() {
        super.onResume();
        GlobalToast.show("进入加速监测...", Toast.LENGTH_SHORT);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (null != sensorManager) {
            sensorManager.unregisterListener(sensorEventListener);
        }

        GlobalToast.show("退出加速监测...", Toast.LENGTH_SHORT);
    }

    private SensorEventListener sensorEventListener = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent sensorEvent) {
            float x_value = Math.abs(sensorEvent.values[0]);
            float y_value = Math.abs(sensorEvent.values[1]);
            float z_value = Math.abs(sensorEvent.values[2]);

            if (x_value > THRESHOLD_VALUE || y_value > THRESHOLD_VALUE
                    || z_value > THRESHOLD_VALUE) {
                GlobalToast.show("设备正在晃动...", Toast.LENGTH_SHORT);
            }
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int i) {
        }
    };

本文参考链接:How to avoid a Toast if there's one Toast already being shown

相关文章

网友评论

    本文标题:Android 避免多次显示同一个 toast

    本文链接:https://www.haomeiwen.com/subject/iisgnxtx.html