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

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

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

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

Android

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

Q&A

解決済

1回答

1516閲覧

Android にて このデータが来るまで次の処理にいかない、としたいとき

ryuuichi2014

総合スコア115

Java

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

Android

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

0グッド

1クリップ

投稿2015/12/25 08:11

Android にて このデータが来るまで次の処理にいかない、としたいとき。

いい方法が思いつきません。

while で囲むのもなんか怖い気がするので、他にいい方法はないでしょうか?

=======================

ボタンを押す

(1)あるサイトからデータを読み込む

読み込み終わるまで動作停止

(2)読み込みおわったら、また別のサイトからデータを読み込む

読み込見終わるまで動作停止

文字を表示して(1)に戻り、繰り返す

この流れなんですが、(1)だけなら、Volleyつかったり、タイマーつかったりするんですが、処理が終わるまでまったりするのが続くので、スマートな方法はないでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

ネットワーク通信に成功した時に呼ばれるリスナーから、またネットワーク通信をするメソッドなどを呼ぶのはどうでしょうか?
動かしたわけではないので、保証はできませんがこんな感じにします。
※Volleyを使った例です。

java

1private int cnt = 0; 2private String[] urlArray = {"http://yahoo.co.jp","https://teratail.com/","https://twitter.com"} 3 4private void load(){ 5 // Volleyの処理 6 String url = getURL(cnt); 7 mQueue = Volley.newRequestQueue(this); 8 mQueue.add(new JsonObjectRequest(Method.GET, url, null, 9 new Listener<JSONObject>() { 10 @Override 11 public void onResponse(JSONObject response) { 12 // 情報取得完了 13 // 成功したので、もう一回通信メソッドを呼ぶ 14 // 何か変数の値を変化させて、どこまで通信をしたかを記録しておくのがいいですね 15 // 今回は、int型のcntをインクリメントするものとします 16 cnt++; 17 if(urlArray.length > cnt){ 18 load(); 19 }else{ 20 // 読み込み終わり 21 // ダイアログなどを出して処理終了などを伝えるのもいいかもですね 22 } 23 } 24 }, 25 new Response.ErrorListener() { 26 @Override public void onErrorResponse(VolleyError error) { 27 // エラー処理 error.networkResponseで確認 28 // エラー表示など 29 } 30 })); 31} 32 33private String getURL(int urlIndex){ 34 // urlIndexよりURLを生成 35 // 今回順次読み込んでいきたいURLをurlArrayという配列に定義してあるとします。 36 retune urlArray[urlIndex]; 37}

投稿2015/12/25 10:57

ueno

総合スコア221

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

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

ryuuichi2014

2016/01/14 06:18

ありがとうございます、volley とても便利ですね!たすかりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問