0

私は自分の AndroidMainActivityを持っていsetContentViewます。ビューは、黒/青のグラデーションの背景とImageView. これは私のonCreateです:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /**
        * Activity elements
        * */
        ImageView rt_logo = (ImageView) findViewById(R.id.rt_logo);

        /**
        * Activity variables
        * */
        HttpGetRequest httpGetRequest = new HttpGetRequest(rt_logo);

        try {
        URI uri = new URI("http://www.myurl.com");
        URI[] uris = {uri};

        response = httpGetRequest.execute(uris).get();
    [...]   
    } 

ページのコードを取得するには、AsyncTask. デバッグには、5 秒間スリープを使用します。

ImageView rt_logo;

public HttpGetRequest(ImageView _rt_logo) {
    rt_logo = _rt_logo;
}

@Override
protected String doInBackground(URI... uris) {

HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(uris[0]);


[...]

SystemClock.sleep(5000);
getString = stringBuffer.toString();

return getString;
}

私の問題は、黒/青のグラデーションとロゴが表示される前に 5 秒間白い画面が表示されることですAsyncTask

アプリの起動時に取得できないのはなぜですか?

ありがとう。

4

3 に答える 3

0

Siddharth のように、私もあなたがやろうとしていることについて少し混乱しています。あなたがしていることは完全に間違っているわけではありません。基本的には、スレッドを開始し、5 秒待ってから、Http 要求から情報を取得することです。背景が表示されない原因にはなりません。しかし、私には疑いがあります。この行:

response = httpGetRequest.execute(uris).get();

あなたは結果を期待しています。別のスレッドなので、あなたが思っているような反応は得られない可能性があります。実際には null でさえあるかもしれません (すべてのコードを見るまでわかりません)。とにかく、私はそれをチェックします。なぜなら、あなたが何かをしている場合、応答でその遅延を引き起こしている可能性があるからです。の残りの部分が何をするかを見るのはいいことですonCreate

于 2013-10-26T20:53:06.697 に答える
0

sleep() で何をしようとしているのかは明確ではありません。ただし、「AsyncTask」の doInBackground メソッドで言及したため、非同期タスクが開始された後にのみ実行されます。アプリの起動時に遅延が必要な場合は、おそらく AsyncTask の外の onCreate() メソッドで遅延をコーディングする必要があります。

于 2013-10-26T20:47:00.003 に答える