facebook twitter hatena line email

「Android/マルチスレッド」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(秒カウント処理)
行27: 行27:
 
         setContentView(R.layout.activity_main);
 
         setContentView(R.layout.activity_main);
 
         Button btn = (Button)findViewById(R.id.button01);
 
         Button btn = (Button)findViewById(R.id.button01);
        btn.setText("please,click");
 
 
         btn.setOnClickListener(new View.OnClickListener() {
 
         btn.setOnClickListener(new View.OnClickListener() {
 
             public void onClick(View v) {
 
             public void onClick(View v) {
行43: 行42:
 
         });
 
         });
 
         Button btnCheck = (Button)findViewById(R.id.button02);
 
         Button btnCheck = (Button)findViewById(R.id.button02);
        btnCheck.setText("please,click");
 
 
         btnCheck.setOnClickListener(new View.OnClickListener() {
 
         btnCheck.setOnClickListener(new View.OnClickListener() {
 
             public void onClick(View v) {
 
             public void onClick(View v) {

2018年10月25日 (木) 15:45時点における版

サンプルソース

// マルチスレッドロード
new Thread(new Runnable() {
    @Override
    public void run() {
         // ここにロジックを書く
    }
}).start();

サンプルソース(toastなどを使う場合)

// マルチスレッドロード
new Thread(new Runnable() {
    // マルチスレッド内でtoastなどを使う場合はこちらに記述
    runOnUiThread(new Runnable() {
        public void run() {
        Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show();
        }
    });
}).start();

秒カウント処理

   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       Button btn = (Button)findViewById(R.id.button01);
       btn.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
               ThreadSample thread = new ThreadSample();
               thread.start();
               Log.i("threadexec", "ThreadSample処理開始");
               try {
                   // thread.join(); // Threadが終わるまで待機(途中で別のクリックイベントを処理させても処理されなくなってしまうのでおすすめしない)
                   thread.join(100); // 処理開始から0.1秒間待機だけ
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
               Log.i("threadexec", "ThreadSample処理終了");
           }
       });
       Button btnCheck = (Button)findViewById(R.id.button02);
       btnCheck.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
               Log.i("threadexec", "isAlive=" + thread.isAlive());
           }
       });
   }
   public class ThreadSample extends Thread {
       public void run(){
           for (int i = 0; i < 5; i++) {
               try {
                   Thread.sleep(1000); // 1秒待機
                   Log.i("threadexec", (i + 1) + "秒経過");
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
           }
       }
   }

レイアウト

<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button01">
</Button>