下のようにthreadを使って、countを表示していますが、実行完了後count++が始まります。
実行完了後(インストール完了後)だと、スマホを開いていなくてもcount++が始まってしまいます。
スマホでアプリを表示後にcount++を始めるには、どのようにしたらよいでしょうか。
よろしくお願いします。
説明を詳細にします。
実行完了後というのは、android studioでビルドが終わりインストールが終わった後に「操作が正常に完了しました」というメッセージが出た時、という意味です。
その時にスマホを開いていれば、そのアプリが表示され、countが0からカウントされますが、しばらくしてからスマホの電源を入れてアプリを表示させると、すでにcountがかなり進んだ状態で表示されます。
なので、スマホの電源を入れてアプリを表示させたときにcountが0からカウントされるようにしたいです。
java
1 2import android.animation.AnimatorInflater; 3import android.animation.AnimatorSet; 4import android.graphics.Insets; 5import android.os.Bundle; 6import android.os.Handler; 7import android.os.Looper; 8import android.view.*; 9import android.view.animation.Animation; 10import android.view.animation.AnimationUtils; 11import android.widget.ImageView; 12import android.widget.TextView; 13 14import androidx.annotation.*; 15import androidx.constraintlayout.widget.ConstraintLayout; 16import androidx.constraintlayout.widget.ConstraintSet; 17import androidx.fragment.app.Fragment; 18import androidx.lifecycle.ViewModelProvider; 19 20import static tmaruko.okura.jiisan.MainActivity.anim1; 21import static tmaruko.okura.jiisan.MainActivity.anim_idou_migi; 22 23 24public class MainFragment extends Fragment implements Runnable{ 25 TextView frma_tv1; 26 TextView frma_tv2; 27 TextView frma_tv3; 28 TextView frma_tv4; 29 TextView frma_tv5; 30 TextView frma_tv6; 31 TextView frma_tv7; 32 TextView frma_tv8; 33 ImageView kaki1; 34 ImageView saru; 35 int count; 36 Thread thread; 37 38 @Override 39 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 40 return inflater.inflate(R.layout.fragment_main, container, false); 41 42 } 43 44 @Override 45 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 46 super.onViewCreated(view, savedInstanceState); 47 48 MainViewModel vm = new ViewModelProvider(requireActivity()).get(MainViewModel.class); 49 thread=new Thread(this); 50 count=0; 51 saru=view.findViewById(R.id.saru); 52 kaki1=view.findViewById(R.id.kaki1); 53 frma_tv1=view.findViewById(R.id.frma_tv1); 54 frma_tv2=view.findViewById(R.id.frma_tv2); 55 frma_tv3=view.findViewById(R.id.frma_tv3); 56 frma_tv4=view.findViewById(R.id.frma_tv4); 57 frma_tv5=view.findViewById(R.id.frma_tv5); 58 frma_tv6=view.findViewById(R.id.frma_tv6); 59 frma_tv7=view.findViewById(R.id.frma_tv7); 60 frma_tv8=view.findViewById(R.id.frma_tv8); 61 62 ConstraintLayout.LayoutParams layoutparams = (ConstraintLayout.LayoutParams)kaki1.getLayoutParams(); 63 float f=layoutparams.horizontalBias; 64 frma_tv7.setText(String.valueOf(f)); 65 frma_tv8.setText("count="+String.valueOf(count)); 66 thread.start(); 67 } 68 69 public void start(){ 70 if(thread==null){ 71 thread=new Thread(this); 72 thread.start(); 73 } 74 } 75 76 public void stop(){ 77 if(thread!=null){thread=null;} 78 } 79 80 public void run() { 81 Thread thisThread=Thread.currentThread(); 82 final Handler mainHandler = new Handler(Looper.getMainLooper()); 83 while (thread!=null){ 84 count++; 85 mainHandler.post(() -> { 86 frma_tv8.setText("count=" + String.valueOf(count)); 87 if(count==1){frma_tv1.startAnimation(anim1);} 88 else if(count==5){frma_tv2.startAnimation(anim1);} 89 else if(count==9){frma_tv3.startAnimation(anim1);} 90 else if(count==13){ 91 frma_tv4.startAnimation(anim1); 92 saru.startAnimation(anim_idou_migi); 93 } 94 else if(count==17){frma_tv5.startAnimation(anim1);} 95 }); 96 try { 97 thread.sleep(1000); 98 } catch (InterruptedException e) { 99 } 100 } 101 } 102} 103 104