我是Android开发的新手。 我在适配器数据模型和自定义服务之间存在同步问题。
尝试更好地解释:
我的服务中有一个CustomList的ArrayList,因为我必须计算秒数(即使应用程序已关闭)并在RecyclerView中打印。如:
ArrayList<Custom> lists;
班级自定义
Public class Custom{
private seconds = 0;
private EventBus eventBus;
...
public int getSeconds(){
return seconds;
}
public void addSecond(){
seconds++;
}
public void eventBus(){
if(eventBus == null){
eventBus = new EventBus();
}
App.bus.post(eventBus);
}
}
所以我有一个适配器在RecyclerView中打印我的类的秒数,如:
public class ListCustomAdapter extends RecyclerView.Adapter<ListCustomAdapter .ViewHolder> {
...
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Custom custom = customs.get(position);
holder.seconds_test.setText(String.valueOf(custom.getSecond()));
}
}
现在在我的服务中,我有一个addSecond函数,我的customClass:
private addSeconds(){
Timer chrono = new Timer();
chrono.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
custom.addSecond();
handler.post(new Runnable() {
@Override
public void run() {
custom.eventBus();
}
});
}
}, 0, 1000);
}
所以,我希望有一个适配器,其中包含一个可以打印几秒钟的自定义类列表。
但问题是,如果我不使用像custom.eventBus();
这样的事件(http://square.github.io/otto/),我就无法将同步适配器与我的服务保持一致:
所以我将(例如在10秒之后)一个适配器数据自定义类:0秒和服务数据10秒。
我的方法正在发挥作用,但我担心每一秒事件都会消耗内存。 有更好的方法吗?