2012-04-14 3 views
0

私は、xmlの値を格納していて、同じ時点でのアクティビティからサービスの変数とメソッドにアクセスする必要があるPatientDetailsというクラスを持っていますか?1つのクラスファイルにアクセスして、そのメソッドまたは変数にサービスにアクセスし、別のクラスファイルにアクセスして、同じ時間にアクティビティで別のクラスファイルにアクセスすることは可能ですか?

答えて

0

これは一般的なマルチスレッドシナリオです。あなたはただデータを読んでいる限り、何の問題もなくそれを行うことができます。

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

0

「ヘルパー」クラスを共有する1つの方法は、アプリケーションのApplicationコンポーネントで、その1つのインスタンスへの「静的な」参照を保持することです。例...

public class MyApp extends Application { 

    public static detailsHelper; 

    @Override 
    public void onCreate() { 

     detailsHelper = new PatientDetails(); 
    } 
} 

あなたは、このようなActivityService次のようにあなたは、単にApplication名前でそれを参照するよう他のコンポーネントの「ヘルパー」を使用する必要があります...

MyApp.detailsHelper.doSomething(); 

技術的に言えば、デフォルト条件の下では、と同時ににアクセスする2つのコンポーネントのこのような発生はありません。Applicationとそのすべてのコンポーネントは、という単一のprocess実行の。

ただし、いずれかのコンポーネントがスレッドを使用するコードを実行する場合は、非常に注意が必要です。たとえば、AsyncTaskを使用するActivity、またはおそらく作業を行うための独自のワーカースレッドを作成するIntentServiceを使用します。この場合、データを書き込む「ヘルパー」クラスのメソッドがスレッドセーフな方法で実行されていることを確認してください。

関連する問題