在Android中为存储的信息创建ID

时间:2014-10-13 05:46:26

标签: java android

我正在开发一个位置感知应用程序(Android 4.2+),我在其中存储位置以创建路线 Route类基本上是Stack的包装器,具有一些额外的功能,例如具有路径的JSON版本和唯一ID。

这是我的路线类

import android.location.Location;
import android.util.Log;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.Iterator;
import java.util.Stack;

public class Route {

    private final static String TAG = "Route Class";
    private boolean locked;
    private String routeID;
    private Stack route;
    private JSONObject jsonRoute;


    public Route(final String routeID){
        Log.v(TAG, "Initializing new Route with ID "+routeID);

        this.routeID = routeID;
        route = new Stack<Location>();

        jsonRoute = new JSONObject();
        // Initialize JSON Route with Route ID
        try {
            jsonRoute.put("Route", routeID);
        } catch(JSONException e) {
            e.printStackTrace();
        }

        locked = false;
    }

    public void add(final Location location) {
        Log.v(TAG, "Adding a new location to Route "+routeID);
        route.push(location);

        //JSON
        JSONArray array = new JSONArray();
        JSONObject temp = new JSONObject();
        try {
            temp.put("Latitude", location.getLatitude());
            temp.put("Longitude", location.getLongitude());
            temp.put("Time", location.getTime());
            temp.put("Speed", location.getSpeed());

            array.put(temp);
            // Start with Location 0
            jsonRoute.put("Location"+(route.size()-1), array);

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }

    public Location removeLast() {
        Log.v(TAG, "Removing last location");
        jsonRoute.remove("Location"+(route.size()-1));
        return (Location) route.pop();
    }

    public Location getLast() {
        return (Location) route.peek();
    }

    public int size() {
        return route.size();
    }

    public boolean empty() {
        return route.empty();
    }

    public String getRouteID() {
        return routeID;
    }

    public Iterator iterator() {
        return route.iterator();
    }

    public void lock() {
        locked = !locked;
    }

    public boolean locked() {
        return locked;
    }
}

我的问题在于ID;我希望能够创建和删除路由,将它们存储在手机中并将它们上传到RESTful服务。到目前为止,我已经考虑过为this solution创建视图ID,但我想要的是:

  • 在应用程序的整个生命周期及其未来实例中唯一的ID。
  • 一个有意义的ID,它将提供有关路线的额外信息。
  • 允许我与其他ID(时间层次结构,类似于LIFO)进行比较的ID

我原以为我可以使用当前日期创建一个ID,例如20141013加上附加的n个数字来确定当天的路线编号,足够长的时间不会弄乱其他结果。但是,如果我关闭应用程序并再次打开它,这仍然会产生问题,因为它将再次从1开始追加。我基本上希望能够通过手机和API中存储的数据对它们进行排序,并在需要时加载旧路由。

是否有人遇到过类似的问题?我愿意接受任何建议,不仅是ID本身,还有整个Route类。

提前致谢!

0 个答案:

没有答案