Quantcast
Channel: 質問!ITmedia 新着質問(Java/253)
Viewing all articles
Browse latest Browse all 2439

Android ストップウォッチ複数同時処理

$
0
0
Android用アプリの開発を勉強している者です。ストップウォッチを作っているのですが、複数同時処理の方法についてご質問させていただきました。 LoopEngine,Hnadlerを用いて一つ実装することはできたのですが、二つにするとどちらか片方しか動作しません。 以下のように一つで動いたものを単純に二つにしてみたのですが、これでは同時処理するのは無理なのでしょうか? 回答よろしくお願い致します。 (省略) //一定時間後にupdateを呼ぶためのオブジェクト class LoopEngine extends Handler { private boolean isUpdate1,isUpdate2; public void start1(){ this.isUpdate1 = true; handleMessage(new Message()); } public void stop1(){ stopDate[0] = nowDate[0]; this.isUpdate1 = false; } public void reset1() { this.isUpdate1 = false; timer1.setText("00:00.0"); startDate[0]=0; stopDate[0]=0; nowDate[0]=0; } public void start2(){ this.isUpdate2 = true; handleMessage(new Message()); } public void stop2(){ stopDate[1] = nowDate[1]; this.isUpdate2 = false; } public void reset2() { this.isUpdate2 = false; timer2.setText("00:00.0"); startDate[1]=0; stopDate[1]=0; nowDate[1]=0; } @Override public void handleMessage(Message msg) { this.removeMessages(0);//既存のメッセージは削除 if(this.isUpdate1){ MainActivity.this.update0();//自信が発したメッセージを取得してupdateを実行 sendMessageDelayed(obtainMessage(0), 10);//10ミリ秒後にメッセージを出力 timer1.setText(output[0]); } else if(this.isUpdate2){ MainActivity.this.update1();//自信が発したメッセージを取得してupdateを実行 sendMessageDelayed(obtainMessage(0), 10);//10ミリ秒後にメッセージを出力 timer2.setText(output[1]); } } }; //時間処理 public String update0(){ nowDate[0] = System.currentTimeMillis() - startDate[0] + stopDate[0]; minute =(int)((((nowDate[0]))/1000)/60); second =(int)((((nowDate[0]))/1000)%60); m_second =(int)(((nowDate[0])/100)%10); String m_secondD = String.valueOf(m_second); String secondD = String.valueOf(second); String minuteD = String.valueOf(minute); if(second < 10) secondD = "0" + second; if(minute < 10) minuteD = "0" + minute; output[0] = minuteD + ":" + secondD + "." + m_secondD; Log.d("1",output[0]); return output[0]; } public String update1(){ nowDate[1] = System.currentTimeMillis() - startDate[1] + stopDate[1]; minute =(int)((((nowDate[1]))/1000)/60); second =(int)((((nowDate[1]))/1000)%60); m_second =(int)(((nowDate[1])/100)%10); String m_secondD = String.valueOf(m_second); String secondD = String.valueOf(second); String minuteD = String.valueOf(minute); if(second < 10) secondD = "0" + second; if(minute < 10) minuteD = "0" + minute; output[1] = minuteD + ":" + secondD + "." + m_secondD; Log.d("2",output[1]); return output[1]; }

Viewing all articles
Browse latest Browse all 2439

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>