在我的应用程序中,主页面中包含了很多要加载到我的上传管理器活动上的图像,因此可能需要几秒钟,具体取决于图像的数量。我打算创建一个启动画面来执行此加载,同时显示一个图像,该图像没有带有标题的默认空白屏幕那么糟糕。我已经完成了这个,除了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中,就像在那里做我的图像一样。
我现在让它快速加载几秒钟后出现的图像。我将实施某种进度对话。
任何有类似问题的人都应优先考虑使我的装载效率更高。
答案 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);
}