2011-12-02 5 views
1

私はバックグラウンドでサービスを実行しています。それはIP上でいくつかの文字列を取得します。 それらを切り捨て、いくつかの変数に合わせてください。Androidサービスは、他のクラスからのリクエストのためにデータを保持する必要があります

は、だから私は考えた:

public class Listener extends Service{ 
public void main(){ 
//fetch and preprocess data 
data=fetched_string; 
} 

public String data=null; 
public String getData(){return data;} 

} 

私の理解では、これは動作するはずです。しかし、どのように私は別のクラスからこの文字列データにアクセスすることができますか私のアイデアに間違って何ですか?

Android用のもっと洗練されたソリューションがありますか?

答えて

1

サービスが実行されている、つまり別のプロセスでBroadcastReceiverによって呼び出されていない場合は、アプリケーションクラスshown hereを延長し、サービスを設定してください。次に、アプリケーション内の他のクラスからグローバル変数にアクセスできます。それ以外の場合は、サービスでSqliteデータベースに書き込んでそこからアクセスします。

0

シングルトンクラスで生活するグローバル変数は、アーキテクチャナチスによって軽蔑されていますが、実際にはアンドロイドで充実しています。アプリケーションのすべてのクラスからアクセスできます。つまり、同じVM内で実行されますが、アプリケーションが再起動しても生き残ることはできません。たくさんある場合は、SQLiteの、データは非常に構造化されていないとあなたは本当に を照会/ソートする必要がある - - (小さなデータ量のための)共有好み -

再起動し、そこAER 3つのオプション 以上のデータを格納するためにそれをシリアル化あなたが選んだデータバインディング・ソリューション(シャムー・セルフ広告:https://github.com/ko5tik/jsonserializer)を使ってJSONを作成し、データが構造化されていて、オブジェクトを持ちたい場合はファイルに保管します。

関連する問題