前提・実現したいこと
メインアクティビティから他のActivity に移動し、
そのActivity をfinish()で終わらせてもActivity内で指定したプロセスが動き続けます。
finish()したらそこで作ったものを一旦全て開放したいです。
発生している問題・エラーメッセージ
MainActivityに戻ってもSubActivityのTimer関数が動き続けます
該当のソースコード
MainActivity 内
JAVA
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 start.setOnClickListener(new View.OnClickListener() { 4 @Override 5 public void onClick(View view) { 6 Intent intent = new Intent(MainActivity.this, SubActivity.class); 7 startActivity(intent); 8 } 9 }); 10 }
SubActivity内
JAVA
1 Sound sound; 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 Timer time = new Timer(); 6 time.scheduleAtFixedRate(new TutorialTask(), 1000, 50); 7 caliButton = findViewById(R.id.caliButton); 8 caliButton.setOnClickListener(new View.OnClickListener() { 9 @Override 10 public void onClick(View view) { 11 log.setStandardRotation(gamerotation); 12 nowPlaying = true; 13 } 14 }); 15 } 16 17 public class TutorialTask extends TimerTask { 18 public void run() { 19 try { 20 21 //この関数がfin();を呼んだあとも動き続ける 22 Sound.beep(); 23 24 if (isfin) fin(); 25 } catch (Exception ex) { 26 ex.printStackTrace(); 27 } 28 } 29 }
試したこと
onDestroy() 内でTimerをcancelするようにしたら止まったのですが、よりよい方法があるように思えます
質問したいこと
①onDestroy() 内にそのアクティビティ内で動いているであろうものを一つ一つ停止していくしかありませんか?よりよい方法があれば教えて下さい
②プロセスのライフサイクルについて、Activityのライフサイクルのような図はありますか?
また、Androidのプロセスについて検索する際のキーワードはありますか?
自分はプロセスという言葉を曖昧にしか捉えていないようなのでこの機会にしっかり学びたいです
あなたの回答
tips
プレビュー