Androidで、タイマーで3秒おきに処理をするアプリを作っています。
MainActivity.onCreate()
の中でTimer
を生成しています。
問題は、アプリからいったんホーム画面に遷移し、しばらく操作してから「最近使ったアプリ一覧」からこのアプリを選択して再度表示すると、
新たなアクティビティが起動し、2回目のonCreate
が呼ばれてしまうことです。
ググったところLaunchMode = SingleTask
でアクティビティの多重起動を防止できると書いてあったので
設定してみましたが、やはりアクティビティが2個起動され、onCreate
も2回呼ばれていました。
(SingleInstanceでも同じでした)
検証用のプロジェクトをgithubに上げていますが、ほとんどAndroid Studioで作られるHello worldテンプレートそのままです。
https://github.com/aoyama-val/ActivityTest
何かやり方が間違っているのでしょうか?
<activity android:name=".MainActivity" android:launchMode="singleTask">
public class MainActivity extends AppCompatActivity { MyTimerTask timerTask = null; Timer mTimer = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // アクティビティのhashCodeを表示 int hash = this.hashCode(); Log.d("a", "onCreate: hash = " + hash); //タイマーの初期化処理 timerTask = new MyTimerTask(); mTimer = new Timer(true); mTimer.schedule( timerTask, 100, 3000); setContentView(R.layout.activity_main); } }
再現手順としては、
・Nexus 5でこのアプリを起動
・ホームボタンと戻るボタンを交互に何回か押す
・「最近使ったアプリ」ボタンからこのアプリを選択して表示する
ですが、100%というわけではないです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/29 07:27 編集
2016/11/29 07:29
2016/11/29 09:18