java–Android加载时显示Splash-Screen

java–Android加载时显示Splash-Screen,第1张

概述我有一个Android应用程序,显示3秒的“启动画面”.之后,MainActivity被加载.不幸的是,MainActivity需要额外的约4秒才能加载.在第一次启动时甚至更长.但是,当应用程序加载时,一切运行顺利.现在,如何在SplashScreen的显示期间实现MainActivity的加载?它应该显示一个图像,直到整个东

我有一个Android应用程序,显示3秒的“启动画面”.之后,MainActivity被加载.

不幸的是,MainActivity需要额外的约4秒才能加载.在第一次启动时甚至更长.但是,当应用程序加载时,一切运行顺利.

现在,如何在Splash Screen的显示期间实现MainActivity的加载?它应该显示一个图像,直到整个东西完全加载.
我已经阅读了有关Async-Task的内容,但我不知道该放在哪里以及如何正确使用它.有人能帮助我吗?

SplashScreen.java

public class SplashScreen extends Activity {    private static int SPLASH_TIME_OUT = 3000;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_startup);        new Handler().postDelayed(new Runnable() {            @OverrIDe            public voID run() {                Intent i = new Intent(SplashScreen.this, MainActivity.class);                startActivity(i);                finish();            }        }, SPLASH_TIME_OUT);    }}

MainActivity.java

public class MainActivity extends Activity implements OnClickListener, MediaController.MediaPlayerControl {    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        //Some heavy processing        //starting services        //starting Google Text to Speech        //and so on...    }}

解决方法:

如果没有关于应该显示启动屏幕的时间的特定限制,您可以通过以下方式使用AsyncTask:

public class SplashScreen extends Activity {    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_startup);        startHeavyProcessing();    }    private voID startHeavyProcessing(){       new LongOperation().execute("");    }    private class LongOperation extends AsyncTask<String, VoID, String> {        @OverrIDe        protected String doInBackground(String... params) {            //some heavy processing resulting in a Data String            for (int i = 0; i < 5; i++) {                try {                    Thread.sleep(1000);                } catch (InterruptedException e) {                    Thread.interrupted();                }            }            return "whatever result you have";        }        @OverrIDe        protected voID onPostExecute(String result) {            Intent i = new Intent(SplashScreen.this, MainActivity.class);            i.putExtra("data", result);            startActivity(i);            finish();        }        @OverrIDe        protected voID onPreExecute() {}        @OverrIDe        protected voID onProgressUpdate(VoID... values) {}    }}

如果结果数据的性质不是String,那么您可以将Parcelable Object作为额外的活动.在onCreate中,您可以使用以下方法检索数据:

.getIntent()getExtras.getString( ‘数据’);

总结

以上是内存溢出为你收集整理的java – Android加载时显示Splash-Screen全部内容,希望文章能够帮你解决java – Android加载时显示Splash-Screen所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1102195.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存