Here task (object) is being saved to fireBase Database, but for setting ListID and ID there r few conditions:
- if this is user's first task then set both to 20k 
- if User already have task Lists in the firebase then add listId of thet task List to present task's listID and add (ID of user's last task + 1) to Id of present task. 
What i want the sequence to be ( see Log.e(..) statements in the code ) :
1-> 2-> 3-> 4-> 5-> 6-> 7
What is actually happening : 1-> 4-> 5-> 7-> 2-> 3
(Also, Never going to 6 ... For which i reffered following : Can't reach some lines debugging android app & Android studio gradle breakpoint No executable code found at line ...... But all in vain)
( DBToFireb(..) is a method where changeListener is being used inside onComplete(..) of DatabaseReference.CompletionListener() )
public static boolean addTaskToFireBase(final Activity activity, final com.rb.eztask.model.TodoTask task, final ChangeListener changeListener)
    {
        mDatabase=FirebaseDatabase.getInstance().getReference("tasks");
        final String taskId = mDatabase.push().getKey();
        task.setTaskId(taskId);
        final DatabaseReference myFieBaseDBChecker=FirebaseDatabase.getInstance().getReference("users").
                child(Userkey).child("tasks");
        myFieBaseDBChecker.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String s=dataSnapshot.getValue().toString();
                if(s!=null)
                {
                    if(s.contentEquals(","))
                    {
                        task.setId(20000);
                        task.setListId(20000);
                        task.setKey(UserKey);
                        DBToFireb(activity, taskId, task, changeListener);
                    }
                    else
                    {   String tasks[]=s.split(",");
                        final String lastTask = tasks[tasks.length-1];
                        DatabaseReference compareDb;
                        for(int i=0;i<tasks.length;i++)
                        {
                            if(tasks[i].length()>2)
                            {Log.e("im","1");
                               compareDb=FirebaseDatabase.getInstance().getReference("task").child(tasks[i]);
                                compareDb.addListenerForSingleValueEvent(new ValueEventListener() {
                                    @Override
                                    public void onDataChange(DataSnapshot dataSnapshot) {
                                        Log.e("im","2");
                                        TodoTask taskToCompare=dataSnapshot.getValue(TodoTask.class);
                                        Log.e("im","3");
                                        if(taskToCompare.getBasketName().equals(task.getBasketName()))
                                        {
                                            task.setListId(taskToCompare.getListId());
                                        }
                                    }
                                    @Override
                                    public void onCancelled(DatabaseError databaseError) {
                                    }
                                });
                            }
                        }
                        Log.e("im","4");
                        compareDb=FirebaseDatabase.getInstance().getReference("tasks").child(lastTask);
                        Log.e("im","5");
                        compareDb.addListenerForSingleValueEvent(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                Log.e("im","6");
                                TodoTask lastTaskInFireB = dataSnapshot.getValue(TodoTask.class);
                                    task.setListId(lastTaskInFireB.getListId()+1);
                                task.setId(lastTaskInFireB.getId()+1);
                                task.setKey(UserKey);
                                DBToFireb(activity, taskId, task, changeListener);
                            }
                            @Override
                            public void onCancelled(DatabaseError databaseError) {
                            }
                        });
                        Log.e("im","7");
                    }
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
        return true;
    }
 
     
    