每秒从Service Android同步数据适配器

时间:2018-04-03 07:16:53

标签: android service android-recyclerview

我是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秒。

我的方法正在发挥作用,但我担心每一秒事件都会消耗内存。 有更好的方法吗?

0 个答案:

没有答案