問題タブ [android-vpn-service]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - VPNservice.builder.addAddress - 何をしますか?
公式ドキュメントによると:
しかし、それは私にはまだ明らかではなく、dns66 のソースと Netguard のソースを掘り下げてもあまり役に立ちませんでした。
サーバーアドレスであると思われるかどうかはわかりませんが、他に意味のあるものは思いつきません。localVPN を実装する前に、どのアドレスを設定すればよいestablish()
ですか?
これは dns66 のソースですが、これらのアドレスを追加する理由がわかりません (すべてが「失敗」した場合、192.168.50.1 が機能することをどのように認識しますか?):
android - Androidフォアグラウンド(vpn)サービスからコレクションを観察する方法
VPN トンネルの「ブロック/許可ロジック」を持つシングルトン クラスがあります。トンネルに送信されたパケットは送信されず、アプリケーションは許可リストに基づいてバイパスできるため、ファイアウォールの単純な実装として動作できます。
私がやりたいことは、Set<String>
ブロックされたアプリケーションのパッケージ名を変更するときに、このブロックされたアプリケーション セットを使用してサービス スレッドをvpnservice.builder.establish()
再度実行することです。
これに対する明らかな選択 -ここに示されているようextends LifecycleService
に、「通常の」フォアグラウンド サービスの場合。ただし、私のサービスは拡張する必要があり、実装されていません。可能な実装 (いくつかの変更が必要)をここに示します。android.net.VpnService
LifecycleOwner
私の質問は次のとおりです。
- VPN サービスが、シングルトン クラスで、blockedPackageName コレクションの変更を監視するための、よりクリーンでエレガントな方法はありますか?
- 別の方法がない場合、実装は
LifecycleOwner
私が期待する方法で機能しますか (基本的に私が説明した方法)? (2) の場合
/li>lifecycle.handleLifecycleEvent(Lifecycle.Event.XXXX);
、サービスの onCreate メソッドと onDestroy メソッド (下記参照) を追加するだけで十分ですか? これらは、メモリリークを防ぐこと以外に何かしますか?
PS: ライフサイクル コンポーネントに関する公式ドキュメントを読みましたが、問題をより明確にするのに十分なコード例が見つかりませんでした。