facebook twitter hatena line email

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

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(サンプルソース(toastなどを使う場合))
(秒カウント処理)
行34: 行34:
 
                 Log.i("threadexec", "ThreadSample処理開始");
 
                 Log.i("threadexec", "ThreadSample処理開始");
 
                 try {
 
                 try {
                     thread.join(); // Threadが終わるまで待機
+
                     // thread.join(); // Threadが終わるまで待機(途中で別のクリックイベントを処理させても処理されなくなってしまうのでおすすめしない)
                     // thread.join(2000); // 処理開始から2秒間待機だけ
+
                     thread.join(100); // 処理開始から0.1秒間待機だけ
 
                 } catch (InterruptedException e) {
 
                 } catch (InterruptedException e) {
 
                     e.printStackTrace();
 
                     e.printStackTrace();
 
                 }
 
                 }
 
                 Log.i("threadexec", "ThreadSample処理終了");
 
                 Log.i("threadexec", "ThreadSample処理終了");
 +
            }
 +
        });
 +
        Button btnCheck = (Button)findViewById(R.id.button02);
 +
        btnCheck.setText("please,click");
 +
        btnCheck.setOnClickListener(new View.OnClickListener() {
 +
            public void onClick(View v) {
 +
                Log.i("threadexec", "isAlive=" + thread.isAlive());
 
             }
 
             }
 
         });
 
         });

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

サンプルソース

// マルチスレッドロード
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.setText("please,click");
       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.setText("please,click");
       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>