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

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

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

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

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

1回答

1504閲覧

アプリを再度開くと、タイマーが止まってしまう。

tsoT561T

総合スコア13

Java

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

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

1クリップ

投稿2017/05/25 10:21

###制限時間付きのアプリを作りたい
現在、制限時間付きのゲームを作っています。カウントダウンしてその時間を表示させ、制限時間になると次の画面に遷移するというものです。
http://hakoniwadesign.com/?p=10770
http://hakoniwadesign.com/?p=10775
http://hakoniwadesign.com/?p=10833
上記のサイトを参考に制作しました。

###発生している問題→アプリを再度開くと、カウントダウンが止まってしまう(原因がわからない)
Android StudioでRunボタンを押し実機でアプリを立ち上げると、正常に作動しカウントダウンが始まります。0秒になると次の画面へ遷移します。しかし、カウントダウンの途中でホームボタンを押し、履歴から再度アプリを開くと時間が止まっており、それ以上カウントダウンしなくなってしまいます。また、その状態からさらにホームボタンを押すと強制終了してしまいます。

###該当のソースコード

ソースコードが長く、質問が投稿できないので、制限時間の部分だけをピックアップさせていただきました。

MainActivity.java
強制終了した時、onPause()のcountDownTimer.cancel()の部分でエラーが出ていました。

java

1 protected void onPause(){ 2 super.onPause(); 3 countDownTimer.cancel(); 4 countDownTimer = null; 5 } 6 7 //時間制限を設ける 8 protected void onResume(final int back_number) { 9 super.onResume(); 10 countDownTimer = new CountDownTimer(alltime,100) { 11 @Override 12 public void onTick(long millisUntilFinished) { 13 alltime = millisUntilFinished; 14 int time = (int)millisUntilFinished/1000; 15 ((TextView)findViewById(R.id.tv)).setText("あと" + time + "秒"); 16 } 17 18 @Override 19 public void onFinish() { 20 //画面遷移 21 Intent intent = new Intent(getApplication(), Main2Activity.class); 22 intent.putExtra("back_number",back_number); 23 intent.putExtra("image_syugou",imageDrawable_back); 24 startActivity(intent); 25 } 26 }.start(); 27 }

MainActivity2.java

java

1public class Main2Activity extends AppCompatActivity { 2 3 RadioGroup radioGroup_; 4 String[] s = {"フクロウ","イヌ","イルカ", "ジャガー","カモメ","シロクマ", "ネコ","オランウータン","パンダ","ペンギン","ライオン","リス", "サル","シカ","チーター", "ウマ","ウサギ","クジラ","ウシ","ゾウ"}; 5 int RadioButtonId[] = {R.id.RadioButton1,R.id.RadioButton2,R.id.RadioButton3,R.id.RadioButton4}; 6 7 @Override 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.activity_main2); 11 12 radioGroup_ = (RadioGroup)findViewById(R.id.RadioGroup); 13 14 Intent intent = getIntent(); 15 16 //正解の選択肢のテキスト 17 final int true_data = intent.getIntExtra("back_number",0); 18 final int imageDrawable_back[] = intent.getIntArrayExtra("image_syugou"); 19 20 } 21}

AndroidManifest.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.students.pelmanism3"> 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:roundIcon="@mipmap/ic_launcher_round" 10 android:supportsRtl="true" 11 android:theme="@style/AppTheme"> 12 <activity android:name=".Main0Activity"> 13 <intent-filter> 14 <action android:name="android.intent.action.MAIN" /> 15 16 <category android:name="android.intent.category.LAUNCHER" /> 17 </intent-filter> 18 </activity> 19 <activity android:name=".MainActivity"></activity> 20 <activity android:name=".Main2Activity"></activity> 21 <activity android:name=".Main3Activity"></activity> 22 </application> 23 24</manifest>

###試したこと
onPause()のcountDownTimer=nullを消してみました。

java

1protected void onPause(){ 2 super.onPause(); 3 countDownTimer.cancel(); 4 }

上記のようにしても変化はありませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
言語はjava
Android studio 2.3.1
実機はNEXUS7

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

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

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

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

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

guest

回答1

0

このように挙動がおかしい場合は質問者自身がデバッグをした方が効率的です。

下記のログ出力を行なってください。
・onResumeの先頭でallTimeをログ出力
・onTickの先頭でmillisUntilFinishedをログ出力
・onFinishの先頭に適当なログ出力

また、強制終了したのであればエラーログを質問に記載すべきです。

投稿2017/05/25 12:56

yona

総合スコア18155

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

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

tsoT561T

2017/05/26 11:40

ご回答ありがとうございます。 返信が遅れてしまい、申し訳ございません。 デバックの方法を調べてやってみます。
tsoT561T

2017/05/26 11:55 編集

protected void onResume(final int back_number) { Log.d(TAG, String.valueOf(alltime)); super.onResume(); このような感じでやれば良いのでしょうか?
yona

2017/05/26 12:06 編集

はい。 どこで出力しているかも同時に表示してください。
tsoT561T

2017/05/26 12:53 編集

正常に動いた場合(ホームボタンを押さない場合)のログ出力 onResume() → alltime=30000 onTick() → millisUtilFinished=22816 onFinish() → alltime=0 でした。 異常が起きた時(ホームボタンを押してアプリに戻った時)のログ出力 onResume() → alltime=30000 onTick() → millisUtilFinished=11391 onPause() → alltime=11391 countDownTimer={MainActivity$1@3997} でした。 異常が起きたとき、これ以上デバックができませんでした。
tsoT561T

2017/05/26 12:57

1回目のホームボタンを押すとき、上記のようなログが出ました。そして、デバックができなくなりました(Resume Programボタンが押せない)。再びアプリに戻ったところ同じログ出力が得られました(Resume Programボタンが押せるようになった)。2回目のホームボタンを押すとき、アプリが強制終了してしまいました。。
tsoT561T

2017/05/26 13:05 編集

ログを出力する場所は次の通りです。 protected void onPause(){ Log.v(TAG, String.valueOf(alltime)); Log.v(TAG, String.valueOf(countDownTimer)); super.onPause(); countDownTimer.cancel(); countDownTimer = null; } protected void onResume(final int back_number) { Log.v(TAG, String.valueOf(alltime)); super.onResume(); public void onTick(long millisUntilFinished) { Log.v(TAG, String.valueOf(millisUntilFinished)); public void onFinish() { Log.v(TAG, String.valueOf(alltime));
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問