2016-07-07 60 views
0

我有一个启动服务的活动。我希望服务能够访问Activity的成员变量(一个布尔值)。我在Activity中实现了一个getBoolean()方法,但是如何在服务中实例化Activity来访问它?访问共享数据的服务和活动

回答

0

使用SharedPreferences保存在活动数据和当启动一个服务

SharedPreferences sharedPref = getSharedPreferences(“MYPREF宇可以访问它在服务 在OnStartCommand方法“,Context.MODE_PRIVATE); sharedPref.getBoolean(“flag”,false);

+0

是的,我最终使用了SharedPreferences。只是认为直接访问会更快。 – user1118764

0

你不知道。相反,请使用广播接收器或共享偏好设置。

实施例使用广播接收器 -

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); 
    } 
}