同じアクティビティ (全員が共有するライブラリ プロジェクト内) を使用して、一度に1 つのアプリケーションしか実行できないように、アプリケーションのファミリを制限しようとしています。
その方法を学ぼうとした最初のラウンドで、私は次のことを学びました。
- android:launchMode="singleTask" はうまくいきません。
setVisible(true/false)
それぞれ onResume()/onPause() で、アプリケーションが実行されているかどうかを確認する最良の方法です。しかし、2 番目のインスタンスが 1 番目のインスタンスが実行中であることを認識したら、どうすればよいでしょうか?
そのため、 Activity.getApplication()をオーバーライドして共有静的を返すことで、常に同じインスタンスを返すことで、システムをだますことを考えています。
public class MyApplication extends Application
{
private static MyApplication s_instance;
public MyApplication()
{
s_instance = this;
}
public static MyApplication getApplication()
{
return s_instance;
}
}
(アイデアの功績は@inazarukにあります)
しかし、前述の可視化ソリューションと同様に、これをどうすればよいでしょうか?
システム自体がgetApplication()を使用して、新しいインスタンスを起動するか、単にスタックの先頭に置くかを決定しますか? これは安全ですか?
答えが「いいえ」の場合、Activity.finish()を呼び出して、2 番目のアクティビティが開始されないようにすることはできますか? もしそうなら、どこでこれをしますか?
- Activity.onCreate ()にありますか?
- Activity.onResume() ?
- MyApplication() ? (コンストラクタ)
- より良い場所?