特定のゲスト ワイヤレス ネットワークに自動ログインする Android 用のアプリケーションを作成しました。UI/アクティビティが表示されていない/実行されていない場合でも、このアプリケーションが動作して実行されるようにしたかったのです。
現在はうまく機能しているようですが、設計のロジスティクスに疑問を抱いています。私の質問は次のとおりです。
- サービスも必要ですか?
- 私のデザインは逆ですか?ブロードキャスト レシーバーはサービスを呼び出して作業を行う必要がありますか?
- ブロードキャスト レシーバーをマニフェストに登録し、コードで呼び出す必要はありませんか?
- startService() への複数の呼び出しは悪いですか? サービスが 1 つしか実行されていないことはわかっていますが、サービスを作成する前に、そのサービスが既に実行されているかどうかを確認するにはどうすればよいですか?
アプリケーションには 3 つのコンポーネントがあります。
- アクティビティ- 現在のネットワーク情報を表示するための GUI と、閉じる/「サービスを停止」ボタンがあります。
- サービス- このサービスが行うことは、ブロードキャスト レシーバーを登録することだけです。
ブロードキャスト レシーバー- これがほとんどの作業を行います。3.
- アクティビティの onCreate() は Context.startService() を呼び出します
- サービス onCreate() は、通知アイコンを作成し、ブロードキャスト レシーバーを登録します。
- ブロードキャスト レシーバーの onReceive() は、ネットワークの状態が意図的に変化したかどうかをチェックし、現在特定の SSID に接続されているかどうかをチェックし、認証済みかどうかを登録/チェックするために作成した特別なクラスを呼び出します。