回答編集履歴

9

修正

2021/08/12 17:50

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -54,6 +54,6 @@
54
54
 
55
55
 
56
56
 
57
- schedule メソッドが終わった後は、 20 ミリ秒毎に(このアクティビティで起きている他のことに関係無く) run が実行され、```changePos();``` が実行されます。
57
+ schedule メソッドが終わった後は、 20 ミリ秒毎に(このアクティビティで起きている他のことに関係無く) UIスレッド上で ```changePos();``` が実行されます。
58
58
 
59
59
  ここで既に start_flg は関係ありません。一度だけスケジューリングすれば良いのですから。

8

タスク・・・スレッド

2021/08/12 17:50

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  さらに、```handler.post(~);``` が書かれているのは ```public void run() {~}``` というメソッドの中であり、そのメソッドは ```new TimerTask() {~}``` というクラス(のインスタンス)の定義であり、それは ```timer.schedule( ~ , 0, 20);``` という記述により timer オブジェクトの schedule メソッド第一引数です。
44
44
 
45
- この schedule メソッドは[第二引数]ミリ秒後から、[第三引数]ミリ秒毎に、第一引数の run メソッドを呼び出すように別のにスケジューリングするものです。
45
+ この schedule メソッドは[第二引数]ミリ秒後から、[第三引数]ミリ秒毎に、第一引数の run メソッドを呼び出すように別のスレッドにスケジューリングするものです。
46
46
 
47
47
 
48
48
 

7

修正

2021/08/11 18:06

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  ```public void run() {~}``` というメソッドの中であり、そのメソッドは ```new Runnable() {~}``` というクラス(のインスタンス)の定義であり、それは ```handler.post(~);``` という記述により handler オブジェクトのpost メソッドの第一引数です。
28
28
 
29
- この post メソッドは引数のオブジェクトの run メソッドをメッセージキューにスケジューリングするように要求するものです。
29
+ この post メソッドは引数のオブジェクトの run メソッドの実行をメッセージキューにスケジューリングするように要求するものです。
30
30
 
31
31
 
32
32
 

6

handler コンストラクの件 追加

2021/08/11 18:04

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -34,6 +34,12 @@
34
34
 
35
35
 
36
36
 
37
+ handler は ```new Handler();``` として生成されていますので、メッセージキューは UI スレッドのものとなります。
38
+
39
+ (なお、引数無しのコンストラクタは非推奨となっていまして、正確には ```new Handler(Looper.getMainLooper());``` と書かないと、予期せぬバグが発生する可能性があるようです。)
40
+
41
+
42
+
37
43
  さらに、```handler.post(~);``` が書かれているのは ```public void run() {~}``` というメソッドの中であり、そのメソッドは ```new TimerTask() {~}``` というクラス(のインスタンス)の定義であり、それは ```timer.schedule( ~ , 0, 20);``` という記述により timer オブジェクトの schedule メソッド第一引数です。
38
44
 
39
45
  この schedule メソッドは[第二引数]ミリ秒後から、[第三引数]ミリ秒毎に、第一引数の run メソッドを呼び出すように別のタスクにスケジューリングするものです。

5

いろいろ修正

2021/08/11 18:02

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -22,13 +22,25 @@
22
22
 
23
23
 
24
24
 
25
- この書き方に慣れていらっしゃらないのかもしれませんが、```changePos();``` が書かれているのは ```public void run() {~}``` というメソッドの中であり、そのメソッドは ```new TimerTask() {~}``` というクラス(のインスタンス)の定義であり、それは ```timer.schedule( ~ , 0, 20);``` という記述により timer オブジェクトの schedule メソッド第一引数です。
25
+ この書き方に慣れていらっしゃらないのかもしれませんが、```changePos();``` が書かれているのは
26
+
27
+ ```public void run() {~}``` というメソッドの中であり、そのメソッドは ```new Runnable() {~}``` というクラス(のインスタンス)の定義であり、それは ```handler.post(~);``` という記述により handler オブジェクトのpost メソッドの第一引数です。
28
+
29
+ この post メソッドは引数のオブジェクトの run メソッドをメッセージキューにスケジューリングするように要求するものです。
30
+
31
+
32
+
33
+ [https://developer.android.com/reference/android/os/Handler?hl=ja#post(java.lang.Runnable)](https://developer.android.com/reference/android/os/Handler?hl=ja#post(java.lang.Runnable))
34
+
35
+
36
+
37
+ さらに、```handler.post(~);``` が書かれているのは ```public void run() {~}``` というメソッドの中であり、そのメソッドは ```new TimerTask() {~}``` というクラス(のインスタンス)の定義であり、それは ```timer.schedule( ~ , 0, 20);``` という記述により timer オブジェクトの schedule メソッド第一引数です。
26
38
 
27
39
  この schedule メソッドは[第二引数]ミリ秒後から、[第三引数]ミリ秒毎に、第一引数の run メソッドを呼び出すように別のタスクにスケジューリングするものです。
28
40
 
29
41
 
30
42
 
31
- [https://docs.oracle.com/javase/jp/8/docs/api/java/util/Timer.html#schedule-java.util.TimerTask-long-long-](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Timer.html#schedule-java.util.TimerTask-long-long-)
43
+ [https://developer.android.com/reference/java/util/Timer?hl=ja#schedule(java.util.TimerTask,%20long,%20long)](https://developer.android.com/reference/java/util/Timer?hl=ja#schedule(java.util.TimerTask,%20long,%20long))
32
44
 
33
45
 
34
46
 

4

リンク修正

2021/08/11 17:45

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
 
30
30
 
31
- [https://docs.oracle.com/javase/jp/8/docs/api/java/util/Timer.html#schedule-java.util.TimerTask-long-long-]( https://docs.oracle.com/javase/jp/8/docs/api/java/util/Timer.html#schedule-java.util.TimerTask-long-long- )
31
+ [https://docs.oracle.com/javase/jp/8/docs/api/java/util/Timer.html#schedule-java.util.TimerTask-long-long-](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Timer.html#schedule-java.util.TimerTask-long-long-)
32
32
 
33
33
 
34
34
 

3

リンク追加

2021/08/11 17:31

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -26,6 +26,12 @@
26
26
 
27
27
  この schedule メソッドは[第二引数]ミリ秒後から、[第三引数]ミリ秒毎に、第一引数の run メソッドを呼び出すように別のタスクにスケジューリングするものです。
28
28
 
29
+
30
+
31
+ [https://docs.oracle.com/javase/jp/8/docs/api/java/util/Timer.html#schedule-java.util.TimerTask-long-long-]( https://docs.oracle.com/javase/jp/8/docs/api/java/util/Timer.html#schedule-java.util.TimerTask-long-long- )
32
+
33
+
34
+
29
35
  スケジューリングする"だけ"ですので、この時点では実行されません。
30
36
 
31
37
 

2

ミリ秒

2021/08/11 17:30

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -24,12 +24,12 @@
24
24
 
25
25
  この書き方に慣れていらっしゃらないのかもしれませんが、```changePos();``` が書かれているのは ```public void run() {~}``` というメソッドの中であり、そのメソッドは ```new TimerTask() {~}``` というクラス(のインスタンス)の定義であり、それは ```timer.schedule( ~ , 0, 20);``` という記述により timer オブジェクトの schedule メソッド第一引数です。
26
26
 
27
- この schedule メソッドは[第二引数]秒後から、[第三引数]秒毎に、第一引数の run メソッドを呼び出すように別のタスクにスケジューリングするものです。
27
+ この schedule メソッドは[第二引数]ミリ秒後から、[第三引数]ミリ秒毎に、第一引数の run メソッドを呼び出すように別のタスクにスケジューリングするものです。
28
28
 
29
29
  スケジューリングする"だけ"ですので、この時点では実行されません。
30
30
 
31
31
 
32
32
 
33
- schedule メソッドが終わった後は、 20 秒毎に(このアクティビティで起きている他のことに関係無く) run が実行され、```changePos();``` が実行されます。
33
+ schedule メソッドが終わった後は、 20 ミリ秒毎に(このアクティビティで起きている他のことに関係無く) run が実行され、```changePos();``` が実行されます。
34
34
 
35
35
  ここで既に start_flg は関係ありません。一度だけスケジューリングすれば良いのですから。

1

表現修正

2021/08/11 17:24

投稿

jimbe
jimbe

スコア13209

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
 
25
- この書き方に慣れていらっしゃらないのかもしれませんが、```changePos();``` が書かれているのは ```public void run() {~}``` というメソッドの中であり、そのメソッドは ```new TimerTask() {~}``` というクラスのであり、それは ```timer.schedule( ~ , 0, 20);``` となってて, timer オブジェクトの schedule メソッド第一引数です。
25
+ この書き方に慣れていらっしゃらないのかもしれませんが、```changePos();``` が書かれているのは ```public void run() {~}``` というメソッドの中であり、そのメソッドは ```new TimerTask() {~}``` というクラス(インスタンス)の定義であり、それは ```timer.schedule( ~ , 0, 20);``` という記述により timer オブジェクトの schedule メソッド第一引数です。
26
26
 
27
27
  この schedule メソッドは[第二引数]秒数後から、[第三引数]秒毎に、第一引数の run メソッドを呼び出すように別のタスクにスケジューリングするものです。
28
28