Android:如何在显示活动之前在后台初始化活动

时间:2011-06-30 13:45:32

标签: android android-activity android-asynctask

我有一项活动,其中我显示存储在网站上的图像。 我使用以下代码从其URL获取它并显示活动:

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    Log.i(TAG, "onCreate");
    setContentView(R.layout.ad_screen);

    AsyncTask<String, Void, Integer> task = new AsyncTask<String, Void, Integer>() 
    {
        /** The system calls this to perform work in a worker thread and
         * delivers it the parameters given to AsyncTask.execute() */
        @Override
        protected Integer doInBackground(String... urls) 
        {
            fetchAd();
            return 0; 
        }

        /** The system calls this to perform work in the UI thread and delivers
         * the result from doInBackground() */
        @Override
        protected void onPostExecute(Integer result) 
        {
            displayAd();
        }
    };
    task.execute("");
}

这非常好,但行为不是我想要的行为:在这种情况下,活动被推到屏幕上(从右到左动画),然后AsyncTask开始。因此,图像会在延迟后显示在屏幕上(这是正常的)。

但是我想在推送活动之前执行请求,以便屏幕直接显示其图像而没有任何延迟。

有没有办法让这种行为? 提前谢谢。

3 个答案:

答案 0 :(得分:2)

您可以在上一个活动中下载图像,创建一个位图,然后在启动此活动的意图中将其作为额外内容传递。

答案 1 :(得分:2)

使用AsyncTask在先前的活动中加载图像,并在当前活动中显示图像。

答案 2 :(得分:0)

您可以在“父”活动中,启动新活动的活动,获取内容,将其存储在内存或某种快速访问持久性中,然后启动活动。

同样的原则可能是引入一个“加载器”活动,它将显示一个加载器,并预取数据,当收到它的所有数据将启动应该显示数据的活动。