2013-03-12 2 views
0

생성 버튼을 눌렀을 때마다 프로그램이 자동으로 임의의 숫자를 생성하도록합니다. 질문은 어떻게 내 코드에서 수행합니까?안드로이드에서 매 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)); 
      } 
     }); 
    } 
} 
+0

난 당신이 찾고 있다고 생각 : http://stackoverflow.com/questions/6151566/how-to-wait-a-thread-in- android –

+0

나중에 참조 용으로 위의 코드를 기반으로 나를 도울 수 있습니까? – jun

답변

0

타이머를 설정하고 TimerTask에 대한 확장 프로그램을 제공하십시오. 버튼을 눌렀을 때 타이머를 활성화하면 좋을 것입니다. 여기

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

http://enos.itcollege.ee/~jpoial/docs/tutorial/essential/threads/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(); 
       } 
      } 
     }); 
    } 
} 
+0

내 코드에서이베이스를 수행하는 방법을 보여줄 수 있습니까? – jun

+0

예제 코드 – mdt

+0

덕분에 톤 선생님! 그것은 매력처럼 작동합니다. 나중에 다시 한 번 감사드립니다. – jun

관련 문제