Единственный экземпляр активности - PullRequest
7 голосов
/ 15 июля 2011

Мое приложение имеет три действия, например A -> B-> C.

Действие A вызывается из другого действия через startActivityForResult().Деятельность B и C также называются аналогично.Я должен также вызвать действие A из панели уведомлений (если есть определенное уведомление).

Теперь, если в данный момент я нахожусь в действии B или C, я нажимаю на панель уведомлений и вызываю действие A,приложение переходит только к действию А, а данные, введенные через действия B или C, не сохраняются.

Я не хочу такого поведения.Я хочу, чтобы, если я нажму на Уведомление, оно перенаправляло только на текущий экран.Может ли кто-нибудь помочь.(Я упомянул activity:launchMode как SingleTask).

Ответы [ 2 ]

19 голосов
/ 15 июля 2011

Использование android:launchMode="singleTask", вероятно, является наилучшим подходом, поскольку оно не будет воссоздавать действие, если оно уже запущено.Просто добавьте его в упражнение в вашем AndroidManifest.xml, и все должно быть готово.

<activity
    android:name=".MyActivity"
    android:label="@string/app_name"
    android:launchMode="singleTask"
    >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
 </activity>

Вот еще один вопрос, который может быть полезен: Режим Android singleTask или режим запуска SingleInstance?

0 голосов
/ 30 июля 2011

Вы можете использовать статическую переменную для определения других данных. Однако я не уверен, к какому количеству или типу данных вы хотите получить доступ из других действий.

Также может сработать запись в постоянное хранилище, но опять же - неопределенность того, какие данные вы храните и как затрудняет ответ. Просто напишите / прочитайте постоянное хранилище в методе onResume и onSuspend каждого действия (или создайте суперкласс класса и расширьте его для A, B и C.

...