ボタンを介して別のアクティビティから開始され、開始時にインテントが渡されるアクティビティがあります。アクティビティはインテントで開始されるため、アクティビティが数回作成され、上記のボタンを押すたびにonCreate()が呼び出されることがわかりました。私が読んだドキュメントでは、「「標準」アクティビティの新しいインテントがあるたびに、そのインテントに応答するクラスの新しいインスタンスが作成されます」と書かれているので、そのアクティビティのインスタンスがどこかにあると思います。スタック上。アクティビティには他のアクティビティから参照される静的変数がいくつかあり、この変数の値が決定論的であることを確認したいので、これは避けたいものです。
私が欲しいのは、ボタンを押したときに既存のインスタンスをすべて削除してアクティビティの新しいインスタンスを作成するか、アクティビティを1つだけにして、毎回新しいインテントで作成することです。
アクティビティにandroid:launchMode = "singleTop"を設定し、onNewIntent(intent)を実装することで、これを実現しようとしました。これにより、このシナリオのアクティビティのインスタンスが1つだけになり、新しいインテントを取得できるようになります。ただし、このようにすると、基本的にonCreate()メソッド全体をコピーする必要がありますが、新しいインテントを使用するだけで、間違っているように感じます。
public void onNewIntent(Intent intent) {
myAdapter= null;
serverThread.stopThread();
serverThread = null;
this.onCreate(...); // <- somehow do all this with new intent
}
この状況を簡単に解決する方法を知っていますか?