gpt4 book ai didi

java - 从 MainActivity 切换或删除启动屏幕

转载 作者:行者123 更新时间:2023-12-01 17:31:27 25 4
gpt4 key购买 nike

我的 MainActivity 在某些设备上有很长的冷启动时间,因此我想使用启动屏幕并从 MainActivity 上的函数触发它来完成。

我使用 SplashActivity 作为启动器,然后加载 MainActivity。当我在 SplashActivity 中设置它时,这是有效的,但我的 SplashActivity 突然结束,并且在冷启动时仍然出现空白屏幕,然后启动应用程序主循环。

下面的代码很快结束了启动屏幕并运行 MainActivity,但仍然出现长时间的冷启动空白屏幕。

我知道这也适用于超时/计时器,正如我在大多数答案中看到的那样,但我想通过使用函数或在 NativeActivity 主循环启动后在我的 MainActivity 中触发它。我正在使用 JNI 从 C++ 调用 java 函数。

编辑:我还找到了在 MainActivity 中使用 fragment 的替代解决方案,但不知道从哪里开始,因为作者没有在这里详分割享该解决方案:

https://stackoverflow.com/a/44444946/11736918

public class SplashActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}


我的 MainActivity 刚刚加载另一个 Native .so 库。

public class MainActivity extends NativeActivity {

static {
System.loadLibrary("MyLib");
}

public void RemoveSplash() {
// Ideally I will use this to trigger it from my C++ code using JNI.
}


}

这是我的 AndroidManifest.xml

        <activity android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="landscape">
<!-- Tell NativeActivity the name of or .so -->
<meta-data android:name="android.app.lib_name"
android:value="native-activity" />
</activity>

<activity android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

最佳答案

像这样更改启动时的代码:

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}, 100);

或者,您可以从 list 中设置MainActivity的主题

<activity
android:name=".MainActivity"
android:theme="@style/SplashTheme">

SplashTheme 是

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/colorAccent</item>
<item name="colorPrimaryDark">@color/colorAccent</item>
<item name="colorAccent">@color/colorAccent</item>
<item
name="android:windowBackground">@drawable/img_app_splash_screen</item>
</style>

然后,在 super.onCreate() 之前调用您的函数当您的功能完成后,请调用 setTheme(R.style.AppTheme) ,然后调用super.onCreate()setContentView(R.layout.activity_main)

不需要SplashActivity

关于java - 从 MainActivity 切换或删除启动屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61113647/

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