gpt4 book ai didi

android - SplashScreen 这是正确的方法吗?

转载 作者:行者123 更新时间:2023-11-30 05:11:43 26 4
gpt4 key购买 nike

请注意以下似乎工作正常。如果这是正确的逻辑,或者如果我能做任何更好的事情,我只需要意见

所以这是我第一次使用闪屏。到目前为止(或者我认为)按预期工作,如果我使用的逻辑很好或者我可以改进它,我只需要一些意见。所以基本上在后台我有一个名为 Reader(异步任务)的类,它从 7 个不同的链接中读取(你会看到它被调用了 7 次)并填充我的数据库。我想让启动画面做的是填充该数据库,然后运行 ​​mainActivity。 (如果有赞助商的话,还要让屏幕向上显示足够长的时间)

所以我想到了这个。我知道我不能让我的异步任务是非静态的,但是我不能改变变量。 (isAsyncCompleted) 从这个站点看到这个方法。

public class SplashActicity extends AppCompatActivity {
boolean isHandlerCompleted, isAsyncCompleted = false;

private static int SPLASH_SCREEN_TIME_OUT = 1000;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_acticity);

MyTask myTask = new MyTask();
myTask.execute();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
isHandlerCompleted = true;
if (isHandlerCompleted && isAsyncCompleted) {
Intent intent = new Intent(SplashActicity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
}, SPLASH_SCREEN_TIME_OUT);


}

private class MyTask extends AsyncTask<Void,Void,Void> {

@Override
protected Void doInBackground(Void... voids) {
Reader fromthepast = new Reader(getApplicationContext(), "http://www.lemesosblog.com/index.php?option=com_obrss&task=feed&id=7%3Alemesos-apo-to-parelthon&format=feed", "fromthepast");
Reader international = new Reader(getApplicationContext(), "http://www.lemesosblog.com/index.php?option=com_obrss&task=feed&id=9%3Alemesos-diethni&format=feed", "international");
Reader latestNews = new Reader(getApplicationContext(), "http://lemesosblog.com/index.php?option=com_obrss&task=feed&id=3%253Alemesos-teleftea-nea&format=feed&fbclid=IwAR1VeGagGZD_M_ACBx8tAA38afhVallFc5LG6U58HYCq8iLJFNLKsaXtVAI", "latestNews");
Reader health = new Reader(getApplicationContext(), "http://www.lemesosblog.com/index.php?option=com_obrss&task=feed&id=6:lemesos-ygeia&format=feed", "health");
Reader technology = new Reader(getApplicationContext(), "http://www.lemesosblog.com/index.php?option=com_obrss&task=feed&id=5%3Alemesos-tech&format=feed", "technology");
Reader economy = new Reader(getApplicationContext(), "http://www.lemesosblog.com/index.php?option=com_obrss&task=feed&id=4:lemesos-oikonomia&format=feed", "economy");
Reader tepak = new Reader(getApplicationContext(), "http://www.lemesosblog.com/index.php?option=com_obrss&task=feed&id=8:lemesos-tepak&format=feed", "tepak");
economy.execute();
health.execute();
fromthepast.execute();
international.execute();
latestNews.execute();
technology.execute();
tepak.execute();
return null;
}

@Override
protected void onPostExecute(Void aVoid) {
isAsyncCompleted = true;
super.onPostExecute(aVoid);
}
}

最佳答案

在您的情况下,如果处理程序在您的异步完成之前完成执行,那么您的条件将无效并且您的代码将不会执行。如果没有任何特定要求在指定超时之前阻止下一个 Activity ,您应该将 handler 中的代码移动到 onPostExecute()

关于android - SplashScreen 这是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53609798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com