最近需求要实现这样一个功能,在某个界面停留40多秒后,弹出一个Dialog,让用户去市场评分,或反馈意见。

               /**                 * Created by Administrator on 2016/2/22.                 * 

* 用于提示用户评分工具类 */   public class GradeUtil {   private Timer timer; private Context mContext;   private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { if (null != mContext) { LayoutInflater mInflater = LayoutInflater.from(mContext); View view = mInflater.inflate(R.layout.m_user_rating_dialog, null, false); Dialog dialog = DialogUtil.showUserRatingDialog(mContext, view, null); //弹出Dialog MyClickListener myClickListener = new MyClickListener(dialog); view.findViewById(R.id.iv_good_reputation).setOnClickListener(myClickListener); view.findViewById(R.id.iv_suggestion).setOnClickListener(myClickListener); view.findViewById(R.id.tv_reject).setOnClickListener(myClickListener); SharedPreferencesUtils.setParam(mContext, Constants.VERSION_KEY, BuildConfig.VERSION_CODE); //如果弹出了Dialog,则修改SP版本为当前版本 stop(); } } };   public void start(final Context context) { mContext = context; if (isShowRatingDialog()) { LogUtil.d("GradeUtil", "mGradeUtil.start()"); timer = new Timer(); timer.schedule(new MyTimerTask(handler), 45000); //延迟45秒执行 } }   /** * 计时器 */ public static class MyTimerTask extends TimerTask {   Handler handler;   MyTimerTask(Handler handler){ this.handler = handler; }   @Override public void run() { handler.obtainMessage().sendToTarget(); } }   public void stop() { LogUtil.d("GradeUtil", "mGradeUtil.stop()"); if (null != timer) { timer.purge(); timer.cancel(); timer = null; } }   static class MyClickListener implements View.OnClickListener {   Dialog mDialog;   MyClickListener(Dialog dialog){ mDialog = dialog; }   @Override public void onClick(View v) { switch (v.getId()) { case R.id.iv_good_reputation: try { Uri uri = Uri.parse("market://details?id=" + v.getContext().getPackageName()); Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); v.getContext().startActivity(intent); mDialog.cancel(); } catch (Exception e) { e.printStackTrace(); ToastUtil.showShort(v.getContext(), "没找到应用市场!"); mDialog.cancel(); } break; case R.id.iv_suggestion: FeedbackAgent agent = new FeedbackAgent(v.getContext()); agent.startFeedbackActivity(); mDialog.cancel(); break; case R.id.tv_reject: mDialog.cancel(); break; } } }   private boolean isShowRatingDialog() { int currentVersion = BuildConfig.VERSION_CODE; int lastVersion = (int) SharedPreferencesUtils.getParam(mContext, Constants.VERSION_KEY, 0); //用SP 记录版本号 if (currentVersion > lastVersion ) { //如果当前版本大于上次版本,该版本属于第一次启动 return true; } else { return false; } }   }

实现方法如下, 在onCreate中 mGradeUtil = new GradeUtil(); new出该工具类实例
在onResume()中调用 mGradeUtil.start(NewHomeTeamMainActivity.this);     开始方法 在onStop() 中调用 mGradeUtil.stop();

更多相关文章

  1. android2.3选择相册图片或者调用系统照相
  2. MAC 安装Eclipse: Failed to get the required ADT version numb
  3. 详解Android(安卓)9.0 私有API禁用机制
  4. Android之Service 的生命周期
  5. Android短彩信收发流程(Framework)
  6. Android(安卓)ViewManager实例
  7. Android(安卓)TV的音量键实现流程
  8. 写在20120524:aidl
  9. [Android中react-native调用Native]

随机推荐

  1. Android(安卓)异步加载图片
  2. Android之MediaRecorder进行录影
  3. 带header的GridView(HeaderGridView)
  4. 【Android】Intent中使用Extra传递数据
  5. 【高通SDM660平台 Android(安卓)10.0】(1
  6. Android(安卓)RxJava操作符详解 系列:组合
  7. android监听器(Listener)的使用
  8. android手机电池管理
  9. android模拟器分辨率设置以及获得模拟器
  10. Android(安卓)- 滚动ListView的适配器