質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

3回答

4377閲覧

Android java Threadを繰り返し使う

uikura

総合スコア37

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2015/07/27 07:54

Android、java初心者です。皆様のお力をお貸しください。

現在15秒経つと音楽が流れるアプリを作りたいとかんがえています。
while文の中でThreadを使って1秒ごとにcountしてcountが15になったとき音楽が鳴る、
といった流れで作っているのですが、一度15秒経ち音楽がなった後、
もう一度鳴らそうと思ったら鳴らなくなってしました。
Threadというのは一度しか使えないのでしょうか?
何度でも使うにはどうすればよいんでしょうか?

回答よろしくお願いします

new Thread(new Runnable() {

@Override public void run() { while (nowplayer == 0) { //nowplayerは0 〜 5で変化します count++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } if (count == 15) { mediaPlayer.start(); } Log.d("count", "count =" + count); } } }).start();

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

こういう用途ならば,CountDownTimerというクラスが便利かと思います.
CountDownTimerを利用してタイマー機能を実装する / TechBooster

投稿2015/07/27 09:34

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uikura

2015/08/06 01:28

解決することができました!貼ってもらったサイトも活用させていただきました
guest

0

ベストアンサー

Threadの状態云々の話を省いて、結論から言うと、Threadインスタンスは使い回しできません。
Thread#start()は一度しか呼べないと思ってもらって結構です。

Androidならば、数秒後に処理したいという場合は[Handler#postDelayed()](http://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable, long)が使えます。

Java

1new Handler().postDelayed(new Runnable() { 2 public void run() { 3 // 行いたい処理 4 } 5}, 15000);

どうしてもThreadでやりたいという場合は、その都度Threadインスタンスを生成します。


swordoneさん、ありがとうございます。
コードのnew Handler.postDelayednew Handler().postDelayedに修正しました。

投稿2015/07/27 09:31

編集2015/07/27 14:38
shiolier

総合スコア1156

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uikura

2015/07/27 09:45

回答ありがとうございます。そのやり方で試そうと思ったのですが、postDelayedのところが赤くなりエラーになってしまいます。原因が全くわからないです。 回答よろしくお願いします
swordone

2015/07/27 09:48

赤線にマウスを当てれば原因が表示されるはずです. まあ今回のはpostDelayedの後に余計なピリオドが入っていることだと思いますが
uikura

2015/07/27 13:59

シンボルが見つけられないとのことですが記述する場所が間違っているのでしょうか?
swordone

2015/07/27 14:04

new Handlerの後の括弧を加えて下さい.
uikura

2015/08/06 01:27

遅れてしまい申し訳ありません。解決しました!ありがとうございました
guest

0

現在15秒経つと音楽が流れるアプリを作りたいとかんがえています。

この処理だけであればマルチスレッド化する必要ないと思います。

Android、java初心者です。

マルチスレッド処理は難易度が高いため、単純なClassを作る方法で実装してみることをお勧めします

Threadというのは一度しか使えないのでしょうか?

継承した自前のClassを作成し、インスタンス化すればいいかと思います。

投稿2015/07/27 08:08

tenraku

総合スコア148

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uikura

2015/08/06 01:29

回答ありがとうございました。仰るとおりかなり難しく感じました。Classで実装する方法も勉強していきたいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問