第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Android Studio Activity 啟動(dòng)延遲

Android Studio Activity 啟動(dòng)延遲

牧羊人nacy 2022-07-14 09:52:57
我有一個(gè)異步任務(wù): package e.marco.swimcommit;import android.os.AsyncTask;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import java.io.IOException;public class News extends AsyncTask<String, Void, String> {    @Override    protected String doInBackground(String... strings) {        final StringBuilder builder = new StringBuilder();        final StringBuilder builder2 = new StringBuilder();        {            try {                Document doc = Jsoup.connect("http://www.schwimmclub-schwandorf.de/index.php/8-home/56-infos-neuigkeiten").get();                String title = doc.title();                Elements links = doc.select("h2");                Elements links2 = doc.select("h3");                builder.append(title).append("\n");                for (Element link : links) {                    builder.append(link.text()).append("$");                }                for (Element link : links2) {                    builder2.append(link.text()).append("$");                }            } catch (IOException e) {                e.printStackTrace();            }        }        String text = builder.toString() + "%" + builder2.toString();        return text;    }}和我的 MainActivity 中的 onResume Methode 將返回的文本設(shè)置在文本視圖中  @Override    protected void onResume()    {        super.onResume();        try {            eins.setText(new News().execute().get());        } catch (ExecutionException e) {            e.printStackTrace();        } catch (InterruptedException e) {            e.printStackTrace();        }    }但是,如果我啟動(dòng)應(yīng)用程序,它會(huì)顯示一個(gè)白屏,直到 onResume Methode 獲取文本并將其設(shè)置為 Textview。如何在沒有延遲啟動(dòng)的情況下加載應(yīng)用程序顯示所有其他元素,如按鈕背景等?以便在 onResume Methode 獲取信息并設(shè)置之前 Textview 是空白的?編輯:不阻塞用戶界面
查看完整描述

3 回答

?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

AsyncTask 用于執(zhí)行后臺(tái)操作并在 UI 線程上發(fā)布結(jié)果。在您的情況下,您應(yīng)該放入eins.setTextAsyncTask onPostExecute。


另一個(gè)問題是因?yàn)?AsyncTask 是一個(gè)單獨(dú)的類,所以您需要定義一個(gè)接口將結(jié)果傳遞回 MainActivity。


消息


public class News extends AsyncTask<String, Void, String> {

    private WeakReference<OnNewsListener> mOnNewsListener;


    public void setOnNewsListener(OnNewsListener listener) {

        mOnNewsListener = new WeakReference<>(listener);

    }


    @Override

    protected String doInBackground(String... strings) {

        final StringBuilder builder = new StringBuilder();

        final StringBuilder builder2 = new StringBuilder();

        {

            try {

                Document doc = Jsoup.connect("http://www.schwimmclub-schwandorf.de/index.php/8-home/56-infos-neuigkeiten").get();

                String title = doc.title();

                Elements links = doc.select("h2");

                Elements links2 = doc.select("h3");

                builder.append(title).append("\n");

                for (Element link : links) {

                    builder.append(link.text()).append("$");

                }

                for (Element link : links2) {

                    builder2.append(link.text()).append("$");

                }

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        String text = builder.toString() + "%" + builder2.toString();

        return text;

    }


    @Override

    protected void onPostExecute(String text) {

        if (mOnNewsListener != null) {

            if (mOnNewsListener.get() != null) {

                mOnNewsListener.get().onNews(text);

            }

        }

    }


    public interface OnNewsListener {

        void onNews(String text);

    }

}

主要活動(dòng)


public class MainActivity extends AppCompatActivity implements News.OnNewsListener{

    TextView eins;


    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        eins = findViewById(R.id.eins);

    }


    @Override

    protected void onResume() {

        super.onResume();


        News news = new News();

        news.setOnNewsListener(this);

        news.execute();

    }


    @Override

    public void onNews(String text) {

        eins.setText(text);

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-07-14
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

根據(jù)pz64的建議,在方法中設(shè)置文本onPostExecute()并調(diào)用AsyncTask()不調(diào)用get()方法。get()AsyncTask 上的方法使任務(wù)同步并影響您的 UI。


public class News extends AsyncTask<String, Void, String> {


    @override

    protected void onPreExecute(){

         //initiate your loading views

    }


    @Override

    protected String doInBackground(String... strings) {

        final StringBuilder builder = new StringBuilder();

        final StringBuilder builder2 = new StringBuilder();

        {

            try {

                Document doc = Jsoup.connect("http://www.schwimmclub-schwandorf.de/index.php/8-home/56-infos-neuigkeiten").get();

                String title = doc.title();

                Elements links = doc.select("h2");

                Elements links2 = doc.select("h3");

                builder.append(title).append("\n");

                for (Element link : links) {

                    builder.append(link.text()).append("$");

                }

                for (Element link : links2) {

                    builder2.append(link.text()).append("$");

                }

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        String text = builder.toString() + "%" + builder2.toString();

        return text;

    }

    @override

    protected void onPostExecute(String response){

        //dispose loading views

        if(response != null){

            eins.setText(response);

        }else{

             //could not load

        }

    }

}

稱呼:


@Override

protected void onResume()

{

    super.onResume();

    new News().execute(); //do not call get method

}


查看完整回答
反對(duì) 回復(fù) 2022-07-14
?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以在 oncreate 方法中調(diào)用 asyncTask。并在 onProgressUpdate 方法中設(shè)置結(jié)果。


@Override

protected void onProgressUpdate(String... text) {

    eins.setText.setText(text);    

}


查看完整回答
反對(duì) 回復(fù) 2022-07-14
  • 3 回答
  • 0 關(guān)注
  • 216 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)