簡體   English   中英

在Android上每30秒自動生成隨機數

[英]Auto-generate random number every 30 sec on Android

我希望我的程序在點擊生成按鈕時每30秒自動生成一個隨機數。問題是如何在代碼中執行此操作?

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Random myRandom = new Random();


        Button buttonGenerate = (Button)findViewById(R.id.generateme);
        final TextView textGenerateNumber = (TextView)findViewById(R.id.generatenumber);

        buttonGenerate.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                ArrayList<Object> Arry1 = new ArrayList<Object>();
                for(int i=0;i<1;i++){
                    ArrayList<Integer> Arry = new ArrayList<Integer>();
                    for(int k=0;k<7;k++){
                        Arry.add(myRandom.nextInt(10));
                    }
                    Arry1.add(Arry);
                }
                textGenerateNumber.setText(String.valueOf(Arry1));
            }
        });  
    }
}

設置一個Timer並為其提供您自己的TimerTask擴展。 按下按鈕時激活計時器,您應該會很好。

http://enos.itcollege.ee/~jpoial/docs/tutorial/essential/threads/timer.html

http://docs.oracle.com/javase/6/docs/api/java/util/Timer.html

這是一個基於您的代碼的示例,可以幫助您入門。 請注意,它將由於活動生命周期而分解:

package com.example.tmp;

import java.util.ArrayList;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity {
    Timer timeoutTimer;
    final Random myRandom = new Random();
    GenerateTask genTask = new GenerateTask();
    final ArrayList<Object> arry1 = new ArrayList<Object>();

    class GenerateTask extends TimerTask {
        boolean started = false;
        @Override
        public void run() {
            if (started) {
                System.out.println("generating");
                final TextView textGenerateNumber = (TextView)findViewById(R.id.generatenumber);
                arry1.clear();
                for(int i=0;i<1;i++){
                    ArrayList<Integer> Arry = new ArrayList<Integer>();
                    for(int k=0;k<7;k++){
                        Arry.add(myRandom.nextInt(10));
                    }
                    arry1.add(Arry);
                }
                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        textGenerateNumber.setText(String.valueOf(arry1));
                    }
                });
            }
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);        
        Button buttonGenerate = (Button)findViewById(R.id.generateme);

        buttonGenerate.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                System.out.println("click");
                if (!genTask.started) {
                    genTask.started=true;
                    timeoutTimer = new Timer();
                    timeoutTimer.scheduleAtFixedRate(genTask, 0, 30000);
                } else {
                    genTask.started=false;
                    timeoutTimer.cancel();
                }
            }
        });  
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM