Android Studio - 需要每秒循环代码的帮助

时间:2016-11-07 01:21:44

标签: java android loops android-studio

我需要一个每秒都会执行此代码的系统。我一直在寻找一段时间,仍然无法找到合适的方法。我对Java编程和Android编程都很陌生,所以任何帮助都会非常感激。

Values n = new Values();

double num = n.getNum();
double adder = n.getAdder();
if(adder>=1) {
  num += (adder * 0.1);
}
TextView t = (TextView) findViewById(R.id.textView1);
t.setText(num + "");
n.setNum(num);

另外,我是从类导入值,看起来像这样,

package com.example.durtle02.durtle02;

public class Values {
  double num;
  double cost = 30;
  double adder;

  public double getNum() {
    return num;
  }

  public void setNum(double num) {
    this.num = num;
  }

  public double getCost() {
    return cost;
  }

  public void setCost(double cost) {
    this.cost = cost;
  }

  public double getAdder() {
    return adder;
  }

  public void setAdder(double adder) {
    this.adder = adder;
  }
}

修改

MainActivity.java

    package com.example.durtle02.durtle02;

    import android.app.Activity;
    import android.os.Bundle;
    import android.os.CountDownTimer;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import java.sql.Time;
    import java.util.*;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;


    public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //making game values accessible
    final Values n = new Values();
    //Loading The button for adding
    final Button button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            double num = n.getNum();
            num++;
            TextView tt = (TextView) findViewById(R.id.textView1);
            n.setNum(num);
            tt.setText(n.getNum() + "");
        }
    });
    final Button button2 = (Button) findViewById(R.id.button2);
    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            double num = n.getNum();
            double cost = n.getCost();
            double adder = n.getAdder();
            if (num >= cost) {
                num -= cost;
                cost = cost * 1.35;
                adder++;
                cost = Math.round(cost);
                n.setNum(num);
                n.setCost(cost);
                n.setAdder(adder);
                TextView tl = (TextView) findViewById(R.id.textView3);
                tl.setText(n.getCost() + "");
                TextView tk = (TextView) findViewById(R.id.textView4);
                tk.setText(n.getAdder() + " Adders");
                TextView tt = (TextView) findViewById(R.id.textView1);
                tt.setText(n.getNum() + "");
                TextView tp = (TextView) findViewById(R.id.textView2);
                tp.setText((n.getAdder() * 0.1) + "/s");
            }
        }
    });
   countDownTimer.start();
}

 // Do something each second in a time frame of 60 seconds.
CountDownTimer countDownTimer = new CountDownTimer(60000, 100) {
    public void onTick(long millisUntilFinished) {
        Values n = new Values();

        double num = n.getNum();
        double adder = n.getAdder();
        if(adder>=1) {
            num += (adder * 0.1);
        }
        num++;
        n.setNum(num);
    }
    public void onFinish() {
        countDownTimer.start(); // restart again.
    }
};

        /*
        //---------------------------------------------------------------
        Values n = new Values();

        double num = n.getNum();
        double adder = n.getAdder();
        if(adder>=1) {
            num += (adder * 0.1);
        }
        TextView t = (TextView) findViewById(R.id.textView1);
        t.setText(num + "");

        n.setNum(num);
        //--------------------------------------------------------------
        */

    }

2 个答案:

答案 0 :(得分:0)

如果您的活动位于前台,则会执行以下代码。

index.php

答案 1 :(得分:0)

我认为您可以使用CountDownTimer,如下所示:

// Do something each second in a time frame of 60 seconds.
CountDownTimer countDownTimer = new CountDownTimer(60000, 1000) {
  public void onTick(long millisUntilFinished) {
    // For every second, do something.
    doSomething();
  }

  public void onFinish() {
    countDownTimer.start(); // restart again.
  }
}.start();