启动新Activity在当前Activity“后面”

3

我有一个闪屏活动SplashScreenActivity.java,它会显示几秒钟。

同时,它启动了另一个活动HomeActivity.java,该活动进行一些处理并需要几秒钟来加载。

   //Start a new activity in the BG
   Intent i = new Intent(this, HomeActivity.class);
   //i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   this.startActivity(i);

   //Remove this activity after few seconds so the HomeActivity shows in the FG
   Timer timer = new Timer();
   timer.schedule(new TimerTask() {
       @Override
       public void run() {
           finish();
       }
   }, 2000);

如何在不将HomeActivity带到前台的情况下启动它?


2
你不应该在启动画面活动上进行处理,而是在处理完成后加载你的“主页活动”(HomeActivity)。如果需要,可以将数据传递到此活动。 - Rohit5k2
你是否有一个控制器类,我们称之为AppManager,它将为您进行处理?一旦启动SplashActivity,AppManager开始处理,等一切准备就绪后,您可以启动HomeActivity。这样,您可以将处理过的数据保存在AppManager类(如果是静态的)或实例中。 - hmartinezd
如果这个问题没有令人满意的答案,我会转向那个解决方案。我试图避免做很多修改。 - Majid Laissi
“which does some processing”:这到底是什么意思?它如何进行“一些处理”?它在做什么? - Squonk
等待 sqllitedb 从后台服务填充数据,以便刷新列表视图.. - Majid Laissi
3个回答

1

一次只能运行一个活动。正因为这个限制,片段被引入来支持平板电脑上的两个“视图”。如果一个活动只是显示进度条/旋转器,通常不需要整个活动。

如果启动画面只是显示旋转器,那么你应该将它作为 MainActivity 布局的一部分。将 MainActivity 布局设置为 RelativeLayout,然后将旋转器与背景匹配。

当 MainActivity 加载完成后,您可以将其可见性设置为 gone。如果您想要,甚至可以添加一个动画,使启动画面从屏幕上流动消失。


0

您可以在一个片段中编写给定活动的逻辑,并在加载完成后将启动屏幕片段与已加载的片段交换。

所有这些都发生在同一个活动中。


0
HomeActivity.java的onCreate之前启动SplashScreenActivity.java,但是存在一个bug,即在setContentView之前不会完成。此时,HomeActivity.java加载数据但不可见。几秒钟后才能完成闪屏。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接