Android如何一次又一次地解决调用Web服务以获得更多相同的信息实用程序?

时间:2016-11-11 06:43:39

标签: android json web-services api

嗨,我是Android开发的新手。我正在使用一些像登录这样的网络服务。但我没有得到第一次如何进行webservice调用,然后一次又一次地使用get数据。像第一次配置文件图片加载然后发送时间不需要从Web服务加载。我怎样才能更灵活,更少调用web服务。请帮帮我。

3 个答案:

答案 0 :(得分:0)

您可以检查AsyncTask是否已经运行,然后您可以终止下面的请求检查代码

 private void doLogin(String id, String pass) {
    if (mLoginAsync != null &&
            mLoginAsync.getStatus() == AsyncTask.Status.PENDING
            || mLoginAsync.getStatus() == AsyncTask.Status.RUNNING) {
        Log.i(getClass().getName(), "Already Running");
        return;
    }
    mLoginAsync = new LoginAsync();
    mLoginAsync.execute();

}


public class LoginAsync extends AsyncTask<String, Void, Void> {

    @Override
    protected Void doInBackground(String... strings) {
        //Write Your api call here
        return null;
    }
}

答案 1 :(得分:0)

1.为数据生成md5并将其保存在sharedpreferences中(也在服务器中)。 2.首次在本地db或sharedpreferences中保存数据,对于图像使用缓存技术 3.下次调用get data调用webservice以检查md5 i服务器中的更改时,如果已更改,则将数据从服务器更新为app,否则使用您在步骤2中保存的数据。

答案 2 :(得分:0)

将对象写入本地数据库:

步骤1:解析以json或xml形式获得的数据并将其序列化:

formatted_address

第2步:创建一个类并扩展SQLiteOpenHelper。 创建表并使用url添加序列化数据并键入:

public static byte[] serialize(Object O) throws IOException {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutputStream out = new ObjectOutputStream(bos);
    out.writeObject(O);
    out.close();

    // Get the bytes of the serialized object
    byte[] buf = bos.toByteArray();
    return buf;
}

@覆盖     public void onCreate(SQLiteDatabase db){

Class LocalDB extends SQLiteOpenHelper{

public void addQuery(String type,String url,byte [] object){

    db.execSQL(DICTIONARY_TABLE_CREATE);
}

}

第3步:再次点击网址反序列化数据

public static Object deserialize(byte [] input,String Type)抛出IOException {     if(Type == abc){         MyObj obj =(Myob)in.readObject();         返回obj;       } }

如果我们想在特定时间段内保留此缓存,我们还可以为活动参数添加时间