Как можно выбрать первое действие во время выполнения на основе данных? - PullRequest
3 голосов
/ 05 февраля 2011

Я только начинаю с Android и думаю, что что-то упустил. Похоже, что в Android вы решаете во время разработки, какие действия будут первыми отображаться в вашем приложении.

Я хотел бы написать свое приложение таким образом, чтобы какой-то централизованный контроллер начал выполняться, и он решает, какое действие должно быть первым (например, на основании некоторых данных, полученных откуда-то)

это возможно сделать, и если да, то как? спасибо.

Ответы [ 3 ]

6 голосов
/ 05 февраля 2011

Большинство людей делают это, запуская действие, которое просто выбирает нужный ему конфиг, а затем запускает «реальное» действие. Один из недостатков заключается в том, что первое запущенное действие будет находиться в стеке задач, но если для начальной операции установить android: noHistory = "true", процесс должен быть невидим для пользователя.

3 голосов
/ 28 июля 2015

Приведенный ниже метод может использоваться для отображения экранов учебника при первом запуске приложения.

AndroidManifest.xml :

<activity android:name=".activities.LaunchActivity"
    android:noHistory="true"
    android:theme="@android:style/Theme.NoDisplay">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name=".onboarding.OnboardingActivity"/>

<activity android:name=".activities.MainActivity"/>

LaunchActivity.java :

public class LaunchActivity extends Activity {

    public static final String FIRST_APP_LAUNCH = "com.your.package.name";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (isFirstAppLaunch()) {
            setFirstAppLaunch(false);
            startActivity(new Intent(this, OnboardingActivity.class));
        } else {
            startActivity(new Intent(this, MainActivity.class));
        }

        finish();
    }

    private boolean isFirstAppLaunch() {
        SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);
        return preferences.getBoolean(FIRST_APP_LAUNCH, true);
    }

    private void setFirstAppLaunch(boolean value) {
        SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean(FIRST_APP_LAUNCH, value);
        editor.apply();
    }
}
2 голосов
/ 05 февраля 2011

Интересно, что тут такого сложного.в основном действии в методе onCreate после проверки данных, запускающих другое действие без настройки просмотра содержимого основного действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...