【问题标题】:android async splash screen not showing content viewandroid异步启动屏幕不显示内容视图
【发布时间】:2014-03-27 12:10:07
【问题描述】:

在我的应用程序中,主页包含很多要加载到我的上传管理器活动中的图像,因此可能需要几秒钟,具体取决于有多少图像。我计划创建一个启动画面来执行此加载,同时显示一个不像带标题的默认空白屏幕那么糟糕的图像。我已经这样做了,它应该可以工作并且确实可以,除了 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,而不是只在其中做我的图像。

我现在可以快速加载,几秒钟后就会出现图像。我将实施某种进度对话框。

其他有类似问题的人应该像我一样优先考虑提高加载效率。

【问题讨论】:

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


    【解决方案1】:

    您在 l.execute(this) 和类 load 中将 Context 作为 this 传递给您已通过 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);
        }
    }
    

    【讨论】:

      【解决方案2】:

      覆盖class load extends AsyncTask&lt;Activity, Object, Object&gt;{ 类中的onPostExecute 方法,当您的doInBackground 方法完成图像下载时运行。 在onPostExecute你可以打开你的下一个活动

      喜欢

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-16
        • 2015-01-26
        • 2023-02-01
        • 2022-08-19
        • 2016-08-08
        • 2015-02-20
        相关资源
        最近更新 更多