0

私はxmlからの値を格納しているPatientDetailsという名前のクラスを持っており、同じ時点でサービスからもアクティビティからもその変数とメソッドにアクセスする必要があります??

4

2 に答える 2

0

これは典型的なマルチスレッドシナリオです。データを読んでいるだけなら問題なくできます。

アクティビティを通じて患者詳細クラスからデータを読み取り、サービスを通じてデータを書き込む場合、実行時の例外が発生します。このような場合は、変数またはメソッドを慎重に同期してください。

于 2012-04-14T11:14:31.427 に答える
0

「ヘルパー」クラスを共有する方法の 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作業を行う独自のワーカー スレッドを作成します。この場合、データを書き込む「ヘルパー」クラスのメソッドがスレッドセーフな方法で行われることを確認してください。

于 2012-04-14T11:28:27.280 に答える