亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用連接到套接字來檢查 Internet

使用連接到套接字來檢查 Internet

慕的地8271018 2022-05-25 16:24:56
我遇到了這個代碼片段,通過打開一個套接字來檢查互聯網訪問 -class InternetCheck extends AsyncTask<Void,Void,Boolean> {private Consumer mConsumer;public  interface Consumer { void accept(Boolean internet); }public  InternetCheck(Consumer consumer) { mConsumer = consumer; execute(); }@Override protected Boolean doInBackground(Void... voids) { try {    Socket sock = new Socket();    sock.connect(new InetSocketAddress("8.8.8.8", 53), 1500);    sock.close();    return true;} catch (IOException e) { return false; } }@Override protected void onPostExecute(Boolean internet) { mConsumer.accept(internet); }}但是我如何實際使用這個 AsyncTask?在 myMainActivity中,我調用new InternetCheck().execute();但如何將Consumer參數傳遞給它?PS - 我剛開始使用Android,很抱歉在這里成為菜鳥。
查看完整描述

3 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

只需使用new InternetCheck(consumer).execute()


new InternetCheck(new InternetCheck.Consumer() {

            @Override

            public void accept(Boolean internet) {

                Log.d("Internet", "Internet Connection" + internet);

            }

        }).execute();


查看完整回答
反對 回復 2022-05-25
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

您需要Consumer interface在InternetCheckAsyncTask中傳遞實例


示例代碼


 new InternetCheck(new Consumer() {

        @Override

         public void accept(Boolean internet) {

             if(internet){

               Log.e("INTENET_STATUS","Intenet is avilable");

             }else {

               Log.e("INTENET_STATUS","Intenet Not avilable");

             }

        }

  }).execute();


查看完整回答
反對 回復 2022-05-25
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

您可以像這樣傳遞消費者參數:

new InternetCheck(mConsumer).execute();


查看完整回答
反對 回復 2022-05-25
  • 3 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號