在我的应用程序中,主页包含相当多的图像要在我的上传管理器 Activity 中加载,因此可能需要几秒钟的时间,具体取决于有多少图像。我计划创建一个启动画面来执行此加载,同时显示一个图像,该图像不像带标题的默认空白屏幕那么糟糕。我已经这样做了,它应该可以工作并且确实可以,除了 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 方法中的图像直到启动屏幕之后才执行。相反,我所做的是将网格的加载更改为异步任务,而不是只在那里处理我的图像。
我现在可以快速加载,几秒钟后就会出现图像。我将实现某种进度对话框。
任何其他有类似问题的人都应该像我一样优先考虑提高加载效率。
最佳答案
您将上下文作为l.execute(this)中的this传递,并在类load中传递您'已经传递了 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);
}
}
关于java - android 异步启动屏幕不显示内容 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22687209/