トップページ > プログラム > 2014年03月16日 > Ya4i9MfD

書き込み順位&時間帯一覧

8 位/222 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000120310100000008



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
486アクティビティ側
486surface側
486
486解決しました
Androidプログラミング質問スレ revision41

書き込みレス一覧

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 求めていた説明ですありがとうございます! 精進します


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。