java - 如何测量 Activity 开始和停止之间的时间?

标签 java android performance time

我想也许它可以与 startactivityforresult 一起使用,但不知道如何..?测量结束后,我希望这次出现在另一项 Activity 中。

到目前为止我已经尝试过:

在主要 Activity 中:

 public class MainScreen extends Activity implements OnClickListener {

Button btn_start;
TextView textview1;




@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_screen);


    btn_start = (Button) findViewById(R.id.btn_start);
    btn_start.setOnClickListener(this);
    textview1 = (TextView) findViewById(R.id.textView1);

    textview1.setText(getIntent().getStringExtra("time"));

}

@Override
public void onClick(View v) {
    startActivityForResult(new Intent(this,Game.class), 0);

}

}

在 Activity 中,我想停止时间:

public class Game extends Activity implements OnClickListener{

Button start_time;

int i = 0;
TextView textview1;

Button RelativeLayout;
Button gameover;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    RelativeLayout.setClickable(true);
    setContentView(R.layout.activity_game);
      start_time = (Button) findViewById(R.id.start_time);
      start_time.setOnClickListener(this);
      textview1 = (TextView) findViewById(R.id.textView1);
      gameover = (Button) findViewById(R.id.gameover);


      gameover.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                finish();


            }


            });



}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.game, menu);
    return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override


public void onClick(View v) {


//Button b = (Button) findViewById(R.id.start_time);
    Random r = new Random();
    RelativeLayout decorView = (RelativeLayout) start_time.getParent();
    int screenWidth = decorView.getWidth();
    int screenHeight = decorView.getHeight();
      long startTime =  SystemClock.elapsedRealtime();
      i++;
/*  
        Random r = new Random();

    int x = r.nextInt(R.id.wrap_content);
      int y = r.nextInt(R.id.wrap_content);




    b.setX(x);  
    b.setY(y);
     */ 

    if (i == 1 ) {

        start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
        start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
    }
    if (i == 2 ) {
        start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
        start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
    }
    if (i == 3 ) {
        start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
        start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
    }
    if (i == 4 ) {
        start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
        start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
    }
    if (i == 5 ) {
        start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
        start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
    }
    if (i == 6 ) {
        start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
        start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
    }
    else if (i == 7) {
        long difference = SystemClock.elapsedRealtime()  - startTime;

          Intent intent = new Intent(Game.this, MainScreen.class);
          intent.putExtra("time",difference);
         // Toast.makeText(getApplicationContext(), getIntent().getStringExtra("time"), Toast.LENGTH_LONG).show();
          textview1.setText(getIntent().getStringExtra("time"));
        finish();
    }


}

}

最佳答案

从代码中删除以下行

sec.setOnClickListener(this);

和 onClick(-)

startTime=System.currentTimeInMillis();

并且在

sec.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {

         totalTime=System.currentTimeInMillis()-startTime;

          Intent intent = new Intent(Game.this, MainScreen.class);
          intent.putExtra("time",totalTime);
          startActivity(intent);

    }
}

并在主屏幕中调用

getIntent().getStringExtra("time");

希望这对您有帮助。

关于java - 如何测量 Activity 开始和停止之间的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28810623/

相关文章:

java - 正在寻找强 key 加密/解密算法,该算法在损坏或修改数据时会失败 "loudly"吗?

java - 初学者 GUI 幻灯片代码无法正常工作(可能是循环或按钮问题,不确定)

android - Gradle 离线模式——每天查看一次在线资源

javascript - 加载 HTML 和脚本命令执行

javascript - 分析 jQuery 应用程序

performance - O(N) 是什么意思

java - 与 Java 中复合语句的复制引用同步

java - Java VM 是否移动内存中的对象,如果是,如何移动?

Android studio 深度链接具体应用权限设置

java - 视频持续时间设置不正确 (exoplayer2)