Android应用程序上的数据传输逻辑使用Observer / Observable

时间:2015-04-22 13:32:54

标签: android web-services rest

说明:

我有一个由我的同事开发的Android应用程序。

我需要切断应用程序以使逻辑/编程部分作为Web服务驻留在服务器上,并使剩余部分作为客户端驻留在Android设备上。

问题:

正如您在下面的代码中所看到的,使用了Observer / Observable系统。

1)首先,我需要了解,如果Observer / Observable系统仅用于在Observer(Activity)和Observable之间建立通信。

2)如果是这样,我应该将Manager的程序代码放入Web服务,并使用HTTP GET,POST协议与Activity通信。

3)或者我误解了一切?

public class MainActivity extends Activity implements Observer {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        view = new MainView(this);

        ASensor aSensor;
        aSensor = new ASensor(MainActivity.this);

        aSensor.setListener(new Listener() {
            @Override
            public void onObjectDiscovered(List<AnObject> params) {
                List<AnObject> myParams = new ArrayList<AnObject>();

                TheManager.INSTANCE.feed(myParams);
            }
        });
    }

    @Override
    public void update(Observable observable, Object data) {
        if (observable instanceof TheManager) {
            List<AnObject> objectList = (List<AnObject>) data;
            String retValue = someProcessingMethod(objectList);
            view.setRetValue(retValue);
        }
    }
}

public class TheManager extends Observable implements Serializable {
    public static final TheManager INSTANCE = new TheManager();

    public void feed(List<AnObject> params) {
        List<AnObject> objectList = processParams(params);

        notifyObservers(objectList);
    }
}

1 个答案:

答案 0 :(得分:1)

在Google I / O 2010中,Virgil Dobjanschi发表了演讲Android REST Client Applications Design Pattern,解决了使用SyncAdapter保持本地数据与远程数据库一致的问题。

如果您选择使用ContentProvider存储数据并通过SyncAdapter进行同步,则可能会找到detailed description at Google Developers如何:

  1. Run the Sync Adapter When Server Data Changes
  2. Run the Sync Adapter When Content Provider Data Changes
  3. Run the Sync Adapter After a Network Message
  4. Run the Sync Adapter Periodically
  5. Run the Sync Adapter On Demand