服务和 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",假);