- Androidプログラミング質問スレ revision41
486 :デフォルトの名無しさん[sage]:2014/03/16(日) 10:55:06.06 ID:Ya4i9MfD - エラーではないのですが疑問
Runnableインターフェースを実装したMainActivityとSurfaceViewを継承したクラス用意 run()内でsetContentView(SurfaceView子クラス)してるんですが Activity側とSurface側に用意したLog.dをループさせたところ マルチスレッドになってない気がするんですよね、そういうものですかね? 常套手段はSurface側にRunnable実装ということをわかった上でいじってみたくなり 疑問にぶちあたりました 質問わかりにくいと思いますがご教授ください
|
- Androidプログラミング質問スレ revision41
488 :デフォルトの名無しさん[sage]:2014/03/16(日) 11:16:16.95 ID:Ya4i9MfD - 動きは問題ないです はい
|
- Androidプログラミング質問スレ revision41
489 :デフォルトの名無しさん[sage]:2014/03/16(日) 11:17:30.19 ID:Ya4i9MfD - マルチスレッドだったら片方のループの間にもう片方のログが入り込むはずなのに
片方がすべて表示された後次のがはじまり困ってる
|
- Androidプログラミング質問スレ revision41
493 :デフォルトの名無しさん[sage]:2014/03/16(日) 13:33:55.75 ID:Ya4i9MfD - >>492 勉強不足でキューについて理解できないのですが ハンドラで問題なく実行できてます
|
- Androidプログラミング質問スレ revision41
494 :486アクティビティ側[sage]:2014/03/16(日) 13:40:41.92 ID:Ya4i9MfD - public class MainActivity extends Activity implements OnClickListener, Runnable {
private Handler Hd;private MySurface MS;private Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Hd = new Handler(); MS = new MySurface(this); btn1 = (Button)findViewById(R.id.button1); btn1.setOnClickListener(this); } (省略→)public boolean onCreateOptionsMenu(Menu menu) { public void onClick(View v){ Thread mt = new Thread(this); mt.start(); for(int a=1;a<=500;a++){ Log.d("メイン"+a,"メイン"+a); } } @Override public void run() { Hd.post(new Runnable(){ public void run(){ setContentView(MS); } }); } }
|
- Androidプログラミング質問スレ revision41
495 :486surface側[sage]:2014/03/16(日) 13:42:16.07 ID:Ya4i9MfD - public class MySurface extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder _holder; public MySurface(Context context) { super(context); _holder= getHolder(); _holder.addCallback(this); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceCreated(SurfaceHolder holder) { for(int b=1;b<=500;b++){ Log.d("スレ"+b,"スレ"+b); } } @Override public void surfaceDestroyed(SurfaceHolder holder) { } } 実行結果 メイン500吐いてから スレ500吐く
|
- Androidプログラミング質問スレ revision41
497 :486[sage]:2014/03/16(日) 14:38:47.31 ID:Ya4i9MfD - >>496 setContentViewの時点でUI(おそらくメイン)スレッドに戻しちゃうからスレッド処理できないのか!
ありがとうございます。 そこでさらにレベルの下がった疑問 上から順番に処理したらスレ吐いてからメイン吐く気がする 結果逆だったけど
|
- Androidプログラミング質問スレ revision41
502 :486解決しました[sage]:2014/03/16(日) 16:27:56.72 ID:Ya4i9MfD - >>500 求めていた説明ですありがとうございます! 精進します
|