私はMainActivityとPreferencesActivityを持っています。 PreferencesActivityを使用すると、ユーザーは「プロキシを使用する」設定を切り替えることができます。 PreferencesActivityからMainActivityに戻ったとき、私の新しい設定がすぐに機能したいのですが、アプリケーションを閉じてからもう一度開いた後でしか動作しません。私はMainActivityに環境設定Activityから戻ってくるかどうApp Proxy設定をPreferenceActivityからリアルタイムで変更します。
は、私は理論的にはMainActivityのonCreate
private void setProxy(String host, String port)
{
System.setProperty("http.proxyHost", host);
System.setProperty("http.proxyPort", port);
System.setProperty("https.proxyHost", host);
System.setProperty("https.proxyPort", port);
}
(簡体字コード)
if(preferences.getBoolean("use_proxy"))
{
setProxy(proxyHost, proxyPort);
}
else
{
resetProxy();
}
にこの方法を使用してプロキシ設定を設定します次のコードを使用すると動作するはずです
Intent intent = new Intent(PreferencesActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
しかしそれはしません。 MainActivityのメソッドonCreate
が実行され、プロキシを設定していますが、アプリケーションがユーザーによって手動で再起動される前に、プロキシを介してネットワークが機能しません。
最後に私は唯一の方法しか見つけられませんでしたが、それが正しいとは確信していません。私はPreferencesActivityを閉じて、MainActivity
PackageManager packageManager = c.getPackageManager();// c - PreferencesActivity context
Intent intent = packageManager.getLaunchIntentForPackage(c.getPackageName());
ComponentName componentName = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(componentName);
c.startActivity(mainIntent);
System.exit(0);
これは正常に動作に戻って来るが、私の知る限りでは、System.exit (0);
を使用することをお勧めしていないとfinish
の使用は、この場合には動作しないとき、私はこのコードを使用します。
質問は、ユーザーがアプリケーションを終了せずにPreferenceActivityの変更を強制してアプリケーションを自動的に再起動する正しい方法です。
あなたも投稿することができ、任意の
flags
せずに意思を開始PreferenceActivityとプロキシの値を取得MainActivityの一部? 'あなたのpreferenceActivityの値を入れたり取得したりするときに、アプリケーションを再起動したり閉じたりする必要はありません。 – Jerrol@Jerrolはい、ここをクリックしてください。この質問を展開しないように、コードの一部をGoogleドキュメントに配置しました。https://docs.google.com/document/d/1OYrJPNP0EynyUvpJKm1124F5E2mKdVer-wG8v7qCxLA/edit?usp=sharing 私はアプリケーションをデバッグしているビデオをキャプチャしました(ビデオでは3:33に1回しか動作しませんでしたが、デバッグモードでのみ動作します) - https:// youtu。/ QLRa2yHtDWQ 少し説明します: "プロキシを使用する"チェックボックスが選択されていない場合、プロキシのないデータは読み込まれません。そうでなければ問題なく動作します。 –