2009-09-28 2 views
0

В моем приложении для Android есть набор мини-приложений. Короче говоря, главный экран содержит несколько значков, по одному для мини-приложений. Когда нажимается значок, запускается мини-приложение. Всего у меня 4 мини-приложения. Итак, вы можете себе представить, что мой главный экран похож на Home Screen Launcher. Хотя эти мини-приложения могут работать автономно самостоятельно, я хочу, чтобы пользователь был аутентифицирован. Таким образом, существует функция LoginActivity прямо перед MainActivity.Хотите узнать о правильном использовании taskAffinity & launchModes?

LoginActivity -> MainActivity ---> AppOneActivity 
           ---> AppTwoActivity 
           ---> AppThreeActivity 
           ---> AppFourActivity (aka PresenceListActivity) 

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

(1) Я планирую установите атрибут finishOnTaskLaunch в true для LoginActivity. Насколько я понимаю, после авторизации логина я буду перемещаться по пользователю до MainActivity, и я хочу LoginActivity исчезнуть. Это лучше, чем позвонить #finish о деятельности? Будет ли MainActivity автоматически становиться корнем задачи без какой-либо дополнительной конфигурации/кода?

(2) Одним из мини-приложений является IM-клиент. PresenceListActivity будет содержать множество экземпляров ChatActivity (индивидуальный сеанс чата с активным контактом в buddylist). Я планирую использовать стандартный режим запуска для ChatActivity, так как каждый чат должен обрабатываться новым экземпляром. Звучит правильно?

(3) Липкий панель навигации будет существует в верхнем углу AppOneActivity, AppTwoActivity и т.д .. Я планирую установить clearTaskOnLaunch атрибут верно для всех из них. Насколько я понимаю, я должен очистить стек, когда планирую запустить любой из мини-приложений. Также их launchModes будет singleTask. Я на правильном пути?

(4) Наконец-то я действительно не понимаю, как читать вывод adb shell dumpsys activity. Например

Task{10 com.me.rnd.exit} 
clearOnBackground=false numActivities=1 
affinity=com.me.rnd.exit 
lastActiveTime=5513102 (inactive for 5s) 
    History #1: ..... 

Task{2 com.android.launcher} 
clearOnBackground=true numActivities=1 rootWasReset=true 
affinity=com.android.launcher 
lastActiveTime=5512949 (inactive for 6s) 
    Running #0: 

Иногда под Задачи, вы увидите Истории и в других Идущих, что означают эти? Даже незнакомец, иногда у меня есть две История под задачей.

ответ

0

(1) Я планирую установить для атрибута finishOnTaskLaunch значение true для LoginActivity. Насколько я понимаю, после авторизации логина я перейду к пользователю в MainActivity, и я хочу, чтобы LoginActivity исчез. Это лучше, чем вызывать #finish в Activity? Будет ли MainActivity автоматически становиться корнем задачи без какой-либо дополнительной конфигурации/кода?

Я рекомендую сделать основной актив основной деятельностью с самого начала.

Сначала MainActivity создаст LoginActivity или LoginDialog и вернет результат в MainActivity.

Таким образом, вам не придется определять, как перемещать MainActivity от дочерней к корневой активности.

Однако, если это слишком сильно мешает вашему коду, не принимайте во внимание мою рекомендацию.

Приветствия,

Джозеф

+0

MainActivity необходимо получить и загрузить много данных, так что я не думаю, что ваше предложение будет работать. –

+0

Что касается деятельности, которая обрабатывает активность входа или основную деятельность: LaunchActivity -> LoginActivity и LuanchActivity -> MainActivity Сначала он запускает LoginActivity. После успешного входа в систему активность входа заканчивается и исчезает, а пусковая установка показывает основное действие – user175750

Смежные вопросы