在Android上将TreeMap参数传递给Java的正确方法?

时间:2017-07-06 16:17:16

标签: java android multithreading runnable

我被阻止了 - 有人可以建议我如何正确地将TreeMap(或类似集合)参数传递给线程。使用命名类,我可以传递一个String参数没问题,但经过多次实验后,TreeMap无法工作 - 它总是没有长度。显然,String与TreeMap非常不同,但仍然应该有一些方法可以使它工作。

该程序是一个后台服务,可以从各种传感器获取数据 - 我需要在单独的线程上进行一些数据处理,保存到SD卡等。 我已经阅读过很多帖子,例如Runnable with a parameter?和各种重复的帖子,但没有找到任何解决方案。

// String version works fine
public class MyThread implements Runnable {
        private String s;
        public MyThread(String s) {
            this.s = s;
        }
        public void run() {
        // works great, can process s data, save to sd card, etc.
        }
}
//called by
String s = "mylongcsvstring";
Runnable r = new MyThread(s);
new Thread(r).start();

//TreeMap version doesn't work
public class MyThread implements Runnable {
    private TreeMap<Long, SomeObject> t;
    public MyThread(TreeMap<Long, SomeObject> t) {
        this.t = t;
    }
    public void run() {
    // need to process t but size is zero
    }
}

//called by
TreeMap<Long, SomeObject> tm = new TreeMap<>();
tm.put(Long,SomeObject); // up to a few hundred objects
Runnable r = new MyThread(tm);
new Thread(r).start();

0 个答案:

没有答案