2016-07-07 13 views
0

私はサービスを開始するアクティビティを持っています。私は、サービスにアクティビティのメンバー変数(ブール値)の1つをアクセスさせたいと思います。アクティビティでgetBoolean()メソッドを実装しましたが、アクセスするためにアクティビティをインスタンス化するにはどうすればいいですか?共有データにアクセスするサービスとアクティビティ

答えて

0

使用SharedPreferences - 放送受信機を使用して

例"、Context.MODE_PRIVATE); sharedPref.getBoolean( "flag"、false);

+0

私はSharedPreferencesを使い終わった。ちょうど直接それにアクセスする方が早いと思った。 – user1118764

0

あなたはしません。代わりに、ブロードキャストレシーバまたは共有プリファレンスを使用します。活動中のデータを保存すると、あなたが

SharedPreferences sharedPref = getSharedPreferences( "MYPREFサービスを開始すると、湯がOnStartCommand方法でサービス にアクセスすることができ

public class MyService extends Service { 

    boolean mActivityBoolean; 

    BooleanReceiver mReceiver; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mReceiver = new BooleanReceiver(); 
     LocalBroadcastManager.getInstance(this).registerReceiver(
       mReceiver, new IntentFilter("activityBooleanIntent") 
     ); 
    } 

    @Override 
    public void onDestroy() { 
     LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver); 
     super.onDestroy(); 
    } 

    public class BooleanReceiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      mActivityBoolean = intent.getBooleanExtra("activityBoolean", false); 
     } 
    } 
} 

public class MyActivity extends Activity { 

    void someMethodThatSendsABooloean(boolean trueOrFalse) { 
     ..... 
     Intent intent = new Intent(); 
     intent.setAction("activityBooleanIntent"); 
     intent.putExtra("activityBoolean", trueOrFalse); 
     LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 
    } 
}