Android Studio – 在调用函数之前代码提前执行

huangapple 未分类评论45阅读模式
英文:

Android Studio- Code moving ahead before calling a function

问题

我在Android Studio中调用一个名为On Create的函数

类似于这样

    Log.i(TAG, "Config: On Create 00 " + getInput());
    
    
    public List<Object> getInput(){
        final List<Object> result = new ArrayList<>();
        final DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
        Query query = ref.child("Device").orderByChild("home").equalTo(homeID);
        query.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for (DataSnapshot dataSnapshots :dataSnapshot.getChildren()){
                    result.add(dataSnapshots.getKey());
                    Log.i(TAG, "Config: get Input 2 " + result);
                }
                Log.i(TAG, "Config: On Create 02 " + result);
            }


            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }


        });
        Log.i(TAG, "Config: On Create 01 " + result);
        return result;
    }

生成的日志顺序让我感到困惑,我认为它不符合流程。
日志顺序如下:
日志1)Config On Create 01
日志2)Config On Create 00
日志3)Config get Input 2
日志4)Config On Create 02

我认为日志2应该在日志1之前。
我感到困惑,而且我的结果不如预期。请帮忙解决。

英文:

I am calling a function in Android Studio "On Create".

Something like this:

Log.i(TAG, &quot;Config: On Create 00 &quot; + getInput());


    public List&lt;Object&gt; getInput(){
        final List&lt;Object&gt; result = new ArrayList&lt;&gt;();
        final DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
        Query query = ref.child(&quot;Device&quot;).orderByChild(&quot;home&quot;).equalTo(homeID);
        query.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for (DataSnapshot dataSnapshots :dataSnapshot.getChildren()){
                    result.add(dataSnapshots.getKey());
                    Log.i(TAG, &quot;Config: get Input 2 &quot; + result);
                }
                Log.i(TAG, &quot;Config: On Create 02 &quot; + result);
            }


            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }


        });
        Log.i(TAG, &quot;Config: On Create 01 &quot; + result);
        return result;
    }

The sequence of logs generated is confusing me and I believe it is not as per the flow.
The sequence is:
Log 1) Config On Create 01
Log 2) Config On Create 00
Log 3) Config get Input 2
Log 4) Config On Create 02

I believe Log 2 should come before Log 1
I am confused and also I am not getting the result as expected. Please help.

huangapple
  • 本文由 发表于 2020年4月8日 19:45:58
  • 转载请务必保留本文链接:https://java.coder-hub.com/61099898.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定