android异步启动画面不显示内容视图

时间:2014-03-27 12:10:08

标签: java android android-asynctask android-activity splash-screen

在我的应用程序中,主页面中包含了很多要加载到我的上传管理器活动上的图像,因此可能需要几秒钟,具体取决于图像的数量。我打算创建一个启动画面来执行此加载,同时显示一个图像,该图像没有带有标题的默认空白屏幕那么糟糕。我已经完成了这个,除了setcontentview()确实运行但不显示之外,它应该可以工作。

public class SplashScreen extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash_screen);


    load l=new load();
    l.execute(this);
}


class load extends AsyncTask<Activity, Object, Object>{

    @Override
    protected Object doInBackground(Activity... a) {
        // TODO Auto-generated method stub


    Log.i("ss", "splash");
        Intent intent = new Intent(a[0], UploadManager.class);
        startActivity(intent);
        a[0].finish();


        return null;
    }

}
}

有人有什么建议吗? 并且随时可以询问细节我不会认为我已经解释得太清楚了。

编辑:

谢谢你们快速回复。 但我相信问题是我没有使用启动画面来达到正确的目的, 涉及的过程:

 Intent intent = new Intent(a[0], UploadManager.class);
    startActivity(intent);
    a[0].finish();

似乎立即完成,这意味着我的onCreate方法中的图像直到启动画面之后才会执行。我所做的是将我的网格加载到asynktask中,就像在那里做我的图像一样。

我现在让它快速加载几秒钟后出现的图像。我将实施某种进度对话。

任何有类似问题的人都应优先考虑使我的装载效率更高。

2 个答案:

答案 0 :(得分:1)

您在 l.execute(this)加载中将上下文作为传递给您ve传递了Activity实例。 你可以这样做,它就像我的魅力

public class SplashScreen extends Activity{


    private static int SLPASH_TIME_OUT = 3000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                Intent i = new Intent(SplashScreen.this, MainActivity.class);

                startActivity(i);
                finish();
            }
        }, SLPASH_TIME_OUT);
    }
}

答案 1 :(得分:0)

覆盖onPostExecute类中的class load extends AsyncTask<Activity, Object, Object>{方法,该方法将在您的doInBackground方法完成图片下载时运行。 在onPostExecute,您可以打开下一个活动

protected void onPostExecute(Void unused) { Intent intent= new Intent(this, next.class); startActivity(intent); }