java - 经过一定时间后显示 Toast 消息并执行操作

标签 java android

我有一个应用程序,它可以读取数字文件。预先定义一个阈值,并将文件中的每个数字与阈值一一进行比较。当读取的数量大于阈值时,通过按钮显示警报。如果 2 分钟内未按下按钮,请发送短信。如果按钮再过两分钟仍未按下,则调用电话。

我遇到的问题是计算耗时,并在经过一定时间后触发前面提到的两种方法之一。如何定义以及在哪里定义。我见过很多使用处理程序、计时器和 Runnable 方法的示例,但尝试过但没有成功。当我运行该应用程序时,什么也没有发生。

这是到目前为止我的代码,将不胜感激任何建议或想法。

使用处理程序

private static final int MISS_LIMIT = 1000;
int misses = 0;

    final Handler handler = new Handler();
    final Runnable timer = new Runnable() {
        @Override
        public void run()
        {
            handler.postDelayed(timer, MISS_LIMIT);
            // user too late: increment miss counter
            if (++misses >= MISS_LIMIT)
            {
                //TODO miss limit reached
                Toast.makeText(MainActivity.this, "Time is passed", Toast.LENGTH_SHORT).show();
                finish(); // close this activity
            }
        }
    };

其余代码:

 int Threshold = 40;

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

    File dir = Environment.getExternalStorageDirectory();


    File file = new File(dir, "/Numbers.txt");

    try
    {
       FileInputStream fin = new FileInputStream(file);

       if (fin != null)
       {

        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fin));
        String line ="";

        while((line= bufferedReader.readLine()) != null)
        {

          if (Integer.parseInt(line) > Threshold)
          {
             //store value in integer
             int number = Integer.parseInt(line);

             // create alert dialog
             AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                                    builder
           .setTitle("Alert !!")
           .setMessage("High Temperature !!" + "\t" + number)


           .setPositiveButton("Send SMS",new DialogInterface.OnClickListener()
            {
            public void onClick(DialogInterface dialog,int id)
              {
                // if this button is clicked, close current activity
                MainActivity.this.finish();
              }
            });


    AlertDialog alertDialog = builder.create();
                                          alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.holo_red_light);
        alertDialog.show();
         }

    }

    fin.close();

最佳答案

也许您可以进行以下更改以使其正常工作。

假设您正在从 initiateDialog 方法调用对话框

    void initiateDialog(){
    //Show Alert
    //Your existing code for Dialog
    AlertDialog alertDialog = builder.create();
    alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.holo_red_light);
    alertDialog.show();
    new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {
                    buttonNotPressedFirst();
                }
            }, FIRST_DELAY);

    }
    void buttonNotPressedFirst(){
         //SEND SMS
    new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {
                    buttonNotPressedSecond();
                }
            }, SECOND_DELAY);
    }
    }

    void buttonNotPressedSecond(){
      //Proceed with phone call
    }

关于java - 经过一定时间后显示 Toast 消息并执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37075064/

相关文章:

java - 停止在 Android APK 中生成 javax.annotation 源文件

android - Resources.getSystem() 与 getResources()

android - 在Android上检测wifi IP地址?

android - 如何使用 Picasso lib 在 ImageView 上放大和调整图像

Java 接口(interface)的对象实现

java - Apache Hadoop 没有做它应该做的事情,而是合并和减少我的程序中的工作

java - 带有枚举参数的 Spring @Query 注解

java - 在 JSP 中加载页面时填充下拉列表

java - Mallet:字母不匹配异常

android - 如何获取android Activity 开始的时间?