Как подготовить MainActivity до окончания SplashActivity? - PullRequest
0 голосов
/ 27 февраля 2019

Я бы хотел сделать мой экран-заставку более плавным.Я сделал заставку после прочтения этой ссылки .Однако, когда я заканчиваю SplashActivity и намереваюсь MainActivity, я чувствую, что SplashActivity завершает работу слишком рано, я видел заставку своего устройства перед показом MainActivity (я оцениваю задержку как 0,5 с).Я хочу, чтобы MainActivity была готова до завершения SplashActivity.

Я попробовал решение, в котором установлены флаги FLAG_ACTIVITY_NEW_TASK и FLAG_ACTIVITY_CLEAR_TASK в моем намерении, но это не совсем гладко.

Ниже приведен код дляпереход между двумя действиями:

private void transitionActivity() {
        Intent intent = new Intent(SplashActivity.this, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent);
    }

и файл манифеста:

<activity
            android:name=".SplashActivity"
            android:launchMode="singleTask"
            android:theme="@style/SplashScreenTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".MainActivity"
            android:launchMode="singleTask"
            android:theme="@style/AppThemeNoActionBar" />

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

возможно, дело в том, что он хочет дать задержку на заставке

, если это так, вы можете сделать это с помощью Handler ()

int SplashDuration = 2000;
new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    Intent i = new Intent(splashScreen.this, MainActivity.class);
                    startActivity(i);
                    finish();
                }

            }, SplashDuration);

и если это все еще быстро или медленнодля вас вы можете изменить время на "SplashDuration"

0 голосов
/ 27 февраля 2019

Прежде всего, я хочу поблагодарить всех, кто ответил мне, а также прокомментировал мой вопрос.Существует один ответ @MOF ( ссылка для ответа ), он не решает проблему, но помогает мне придумать новый способ, и этот новый способ помогает моей проблеме больше не существовать.Мой путь:

Intent intent = new Intent(SplashActivity.this, MainActivity.class);
        startActivity(intent);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                finish();
            }
        }, getResources().getInteger(android.R.integer.config_mediumAnimTime));

Спасибо всем вам!

0 голосов
/ 27 февраля 2019

вы можете использовать https://developer.android.com/reference/android/os/AsyncTask.html для этого.сделать логику, когда заставка до 5 секунд, сделать, когда 4 секунды или ниже, чтобы вызвать вашу основную деятельность.

...