私のアプリケーションにはサービスがあり、私のアプリケーションには変数MainActivity
があります:static
public static boolean appIsPlaying = false;
そして、私のサービスコードは次のようなものです:
MainActivity.appIsPlaying = false;
このコードはうまく機能しますが、それが正しい方法かどうかはわかりません。では、この解決策に問題がある場合は助けていただけますか?
ありがとう
私は、すべてにゲッターとセッターを使用しようと言う人々にあまり同意しません。それが解決策です。あなたのソリューションはシンプルですが、効果的です。サービスとアクティビティ自体の間のこの通信方法には問題はありません。これは一部のパブリック API ではないため、パブリック フィールドを使用することは明確な禁止事項ではありません。
満たさなければならない特定の要件がある場合にのみ、問題が発生する可能性があります。このインタラクションは最も単純なので、多くのことはできません。たとえば、値を変更するイベントをリッスンする場合、値を設定するだけでアクティビティに通知しないため、問題が発生します。
その場合は、サービスにバインドして、より複雑な対話を実装できます。値の変更をリッスンするには、リスナーをサービスに保存し、変更が発生したときに通知することで実行できます。
それを行う方法は実際にはありません。より適切な方法とそうでない方法があります。必要に応じて、それらのいずれかを選択する必要があります。
静的変数をユーティリティ クラスに配置し、必要な検証を使用して静的ゲッターとセッターを作成します。クラスを単一インスタンスにすることも推奨されますが、正しく行っていることに問題がないわけではありません。