/** handles time based refreshing of tokens - when they have a duration */ void handleTokenRefresh(JSONObject jsonToken) { int duration = 0; try { duration = jsonToken.getInt("duration"); } catch (JSONException e) { e.printStackTrace(); } if (duration > 0) { if (mRefreshTokenRunnable != null) { mRefreshTokenRunnable.cancel(); } mRefreshTokenRunnable = new CancelableRunnable() { /** keeps track if this is still to be run, or has been cancelled */ private volatile boolean mIsActive = true; @Override public void run() { if (!mIsActive) { return; } triggerRequestVideoToken(); } @Override public void cancel() { mIsActive = false; } }; long refreshTime = duration - 10; if (refreshTime < 1) { refreshTime = 1; } sVcHandler.postDelayed(mRefreshTokenRunnable, refreshTime * 1000L); } }
public static void showToast( final Context context, final Handler handler, final CharSequence text, boolean cancel) { if (showToastRunnable == null) { showToastRunnable = new CancelableRunnable() { public void run() { if (cancel && toast != null) { toast.cancel(); } if (cancel || toast == null) { toastLayout = ((LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE)) .inflate(R.layout.custom_toast, null); toastTextView = (TextView) toastLayout.findViewById(R.id.toasttext); if (android.os.Build.VERSION.SDK_INT > 10 || toast == null) { toast = new Toast(context); } toastDefaultYOffset = toast.getYOffset(); toast.setView(toastLayout); } switch (toastDuration) { case 3500: toast.setDuration(Toast.LENGTH_LONG); break; case 7000: toast.setDuration(Toast.LENGTH_LONG); if (showOnlyToastRunnable == null) { showOnlyToastRunnable = new Runnable() { public void run() { toast.show(); } }; } handler.postDelayed(showOnlyToastRunnable, 3250); break; default: toast.setDuration(Toast.LENGTH_SHORT); } switch (toastPosition) { case 1: toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP, 0, toastYOffset); break; case 2: toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM, 0, toastYOffset); break; default: toast.setGravity( Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM, 0, toastDefaultYOffset); break; } toastTextView.setText(android.text.Html.fromHtml(toastText.toString())); toast.show(); } }; } showToastRunnable.cancel = cancel; toastText = text; handler.post(showToastRunnable); }