Git Product home page Git Product logo

crossprocesssharedpreferences's Introduction

AndroidRemoteSharedPreferences

AndroidRemoteSharedPreferences

Gradle

compile 'cn.tinkling.prefs:remote-shared-preferences:1.0.1'

用法

1.通过Bundle

  • 远程进程:

    SharedPreferences preferences = getContext().getSharedPreferences("preferences", Context.MODE_PRIVATE);
    RemoteSharedPreferences rsp = new RemoteSharedPreferences(preferences);
    RemoteSharedPreferencesDescriptor descriptor = rsp.getSharedPreferencesDescriptor();
    Bundle bundle = new Bundle();
    // If API level >= 18.
    // bundle.putBinder("preferences", rsp);
    bundle.putParcelable("preferences", descriptor);
    // ... 将bundle发送到本地进程
  • 本地进程:

    // ...
    RemoteSharedPreferencesDescriptor d = bundle.getParcelable("preferences");
    SharedPreferences preferences = new RemoteSharedPreferencesProxy(d);
    // ...
    
    // If API level >= 18.
    IBinder binder = bundle.getBinder("preferences");
    IRemoteSharedPreferences remotePrefs = RemoteSharedPreferences.asInterface(binder);
    SharedPreferences preferences = new RemoteSharedPreferencesProxy(remotePrefs);
    // ...

2.直接通过Binder

  • 远程进程:

    public class RemoteService extends Service {
    
        public static final String ACTION_REMOTE_SHARED_PREFERENCES = "remote_shared_preferences";
    
        // ...
    
        @Override
        public IBinder onBind(Intent intent) {
            if (ACTION_REMOTE_SHARED_PREFERENCES.equals(intent.getAction())) {
                SharedPreferences preferences = getSharedPreferences("preferences", Context.MODE_PRIVATE);
                return new RemoteSharedPreferences(preferences);
            }
    
            return null;
        }
    }
  • 本地进程:

    ServiceConnection conn = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            // 与远程SharedPreferences完成连接
            IRemoteSharedPreferences remotePrefs = RemoteSharedPreferences.asInterface(service);
            SharedPreferences preferences = new RemoteSharedPreferencesProxy(remotePrefs);
            // ...
        }
        // ...
    };
    
    // ...
    Intent binder = new Intent(this, RemoteService.class);
    binder.setAction(RemoteService.ACTION_REMOTE_SHARED_PREFERENCES);
    bindService(binder, conn, BIND_AUTO_CREATE);

3.通过AIDL

  • aidl:

    import cn.tinkling.prefs.IRemoteSharedPreferences;
    
    interface IMyAidlInterface {
        IRemoteSharedPreferences getRemoteSharedPreferences();
    }
  • 远程进程:

    class MyAidlInterfaceImpl extends IMyAidlInterface.Stub {
      	@Override
    	public IRemoteSharedPreferences getRemoteSharedPreferences() throws RemoteException {
        	SharedPreferences preferences = RemoteService.this.getSharedPreferences("preferences", Context.MODE_PRIVATE);
            return new RemoteSharedPreferences(preferences);
    	}
    }
  • 本地进程:

    // IMyAidlInterface myAidlInterface = ...
    IRemoteSharedPreferences remotePrefs = myAidlInterface.getRemoteSharedPreferences();
    SharedPreferences preferences = new RemoteSharedPreferencesProxy(remotePrefs);
    // ...

crossprocesssharedpreferences's People

Contributors

yiiguxing avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.