私はxmlからの値を格納しているPatientDetailsという名前のクラスを持っており、同じ時点でサービスからもアクティビティからもその変数とメソッドにアクセスする必要があります??
2 に答える
これは典型的なマルチスレッドシナリオです。データを読んでいるだけなら問題なくできます。
アクティビティを通じて患者詳細クラスからデータを読み取り、サービスを通じてデータを書き込む場合、実行時の例外が発生します。このような場合は、変数またはメソッドを慎重に同期してください。
「ヘルパー」クラスを共有する方法の 1 つApplication
は、アプリのコンポーネントでその単一インスタンスへの「静的」参照を保持することです。例...
public class MyApp extends Application {
public static detailsHelper;
@Override
public void onCreate() {
detailsHelper = new PatientDetails();
}
}
などの他のコンポーネントで「ヘルパー」を使用する必要がある場合、Activity
またはService
単にApplication
次のように名前で参照する場合...
MyApp.detailsHelper.doSomething();
技術的に言えば、デフォルトの状態では、2 つのコンポーネントが同時に何かにアクセスすることはありません。これは、AndroidApplication
とそのすべてのコンポーネントがprocess
単一thread
の実行で単一の中に存在するためです。
ただし、いずれかのコンポーネントがスレッドを使用するコードを実行する場合は、十分に注意する必要があります。たとえば、Activity
を使用するAsyncTask
か、おそらく を使用して、IntentService
作業を行う独自のワーカー スレッドを作成します。この場合、データを書き込む「ヘルパー」クラスのメソッドがスレッドセーフな方法で行われることを確認してください。