Java android异步启动屏幕不显示内容视图
在我的应用程序中,主页上有很多图像要加载到我的upload manager活动中,因此可能需要几秒钟的时间,具体取决于有多少图像。我计划创建一个splashscreen来完成这个加载,同时显示一个图像,它没有默认的带有标题的空白屏幕那么糟糕。我已经完成了这项工作,除了setcontentview()运行但不显示之外,它应该可以正常工作Java android异步启动屏幕不显示内容视图,java,android,android-asynctask,android-activity,splash-screen,Java,Android,Android Asynctask,Android Activity,Splash Screen,在我的应用程序中,主页上有很多图像要加载到我的upload manager活动中,因此可能需要几秒钟的时间,具体取决于有多少图像。我计划创建一个splashscreen来完成这个加载,同时显示一个图像,它没有默认的带有标题的空白屏幕那么糟糕。我已经完成了这项工作,除了setcontentview()运行但不显示之外,它应该可以正常工作 public class SplashScreen extends Activity { @Override protected void onCreate(B
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;
}
}
}
似乎立即完成,这意味着我的onCreate方法中的图像直到启动屏幕之后才执行。相反,我所做的是将我的网格加载到一个asynktask中,这与在其中处理我的图像差不多
我现在可以快速加载,几秒钟后图像就会出现。我将实现某种进度对话框
任何其他有类似问题的人都应该像我一样优先考虑如何提高加载效率。您在l.execute(this)中传递上下文作为this,在类中传递活动实例。 你可以这样做,它对我来说就像一个符咒
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);
}
}
重写
类加载扩展AsyncTask{
类中的onPostExecute
方法,该方法将在doInBackground
方法完成图像下载时运行。
在onPostExecute
中,您可以打开下一个活动
像
受保护的void onPostExecute(void unused){
Intent Intent=新Intent(this,next.class);
星触觉(意向);
}
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);
}
}