2017-12-27 9 views
0

Firebaseのダイナミックリンクは正常に実装されましたが、他のクラスで使用できるようにショートリンクを取得できませんでした。 これは私のコードです。firebaseのショートリンクをタスクから取り除くにはどうすればいいですか?

Uri Shortlink; 
protected void onCreate(Bundle savedInstanceState) 
{ 
    Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() 
     .setLongLink(Uri.parse(linkHere)) 
     .buildShortDynamicLink() 
     .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() 
     { 
     @Override 
     public void onComplete(@NonNull Task<ShortDynamicLink> task) 
     { 
      if (task.isSuccessful()) 
      { 
       // Short link created (THIS WORKS FINE) 
       Shortlink = task.getResult().getShortLink(); 
       Log.i("CHEK 1", "shortLink = " + Shortlink); 
      } 
      else 
      { 
       // Error 
      } 
      } 
     }); 

    // I want this shortlink out of this task here. But i am getting (Null) 
    Log.i("CHEK 2", "shortLink = " + Shortlink); 
} 

答えて

2

タスクは非同期です。あなたはそれに追加されたリスナー内でのみ結果を得ることができます。あなたの主なスレッドをブロックするので、結果が準備が整うまでタスクを待たせるのは悪い考えです。そして、そのアプリはANRになる可能性があります。

内部では、CHEK 1行を使用しているときに、タスクの結果を処理するコードを書き直す必要があります。

関連する問題