服务和 Activity 访问共享数据
Service and Activity accessing shared data
我有一个 Activity 可以启动服务。我希望该服务可以访问 Activity 的成员变量(布尔值)中的 1 个。我在 Activity 中实现了一个 getBoolean() 方法,但是如何在服务中实例化 Activity 以供其访问?
你不知道。相反,请使用广播接收器或共享首选项。
使用广播接收器的示例 -
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);
}
}
使用 SharedPreferences 将数据保存在 activity 中,您可以在服务中访问它
启动服务时在 OnStartCommand 方法中
SharedPreferences sharedPref = getSharedPreferences("MYPREF", Context.MODE_PRIVATE);
sharedPref.getBoolean("flag",假);
我有一个 Activity 可以启动服务。我希望该服务可以访问 Activity 的成员变量(布尔值)中的 1 个。我在 Activity 中实现了一个 getBoolean() 方法,但是如何在服务中实例化 Activity 以供其访问?
你不知道。相反,请使用广播接收器或共享首选项。
使用广播接收器的示例 -
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);
}
}
使用 SharedPreferences 将数据保存在 activity 中,您可以在服务中访问它 启动服务时在 OnStartCommand 方法中
SharedPreferences sharedPref = getSharedPreferences("MYPREF", Context.MODE_PRIVATE); sharedPref.getBoolean("flag",假);