Открыть только одно действие, без основного действия - PullRequest
1 голос
/ 22 октября 2010

У меня есть приложение, которое имеет один сервис и 2 действия. Одно действие (основное) - это действие предпочтений, а другое - диалоговое задание.Служба время от времени должна открывать только тематические действия в диалоге (используя FLAG_ACTIVITY_NEW_TASK).Проблема заключается в том, что, когда действие предпочтений открывается в фоновом режиме (например, пользователь нажимает клавишу HOME вместо BACK, таким образом, действие - OnPause), и служба пытается открыть диалоговое тематическое действие, также открывается основное действие (входит вна переднем плане).Я не хочу этогоИтак, как я могу открыть только тематическую активность из службы, без всплывающей основной активности?

Манифест Android .xml

    <service android:name=".SimpleService"> </service>
<activity
    android:name=".Preferences" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>       
    </activity>

           <activity android:name=".popup_activity" android:theme="@android:style/Theme.Dialog" android:label="@string/app_name">                  
           <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.SAMPLE_CODE" />
           </intent-filter>
           <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
                    <category android:name="screenon.popup.activity" />
                    <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>           
            </activity>

И из службы:

           Intent intent = new Intent(Intent.ACTION_VIEW);
               intent.addCategory("screenon.popup.activity");
               intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

               startActivity(intent);

Ответы [ 2 ]

1 голос
/ 19 января 2011

Я думаю, вы ищете атрибут android: launchMode .

0 голосов
/ 19 января 2011

Алекс, я полагаю, что все, что вам нужно, это отобразить действие предпочтений только один раз, а затем оно должно прекратиться (или, скажем, завершить ()).

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

@Override
    public void onResume()
{
   //if activity is resumed after onPause then only run it 
  this.finish();  //simply kill your activity if it is resumed after pause
}

РЕДАКТИРОВАТЬ -Чтобы узнать, была ли приостановлена ​​активность, необходимо переопределить onPause (). Я думаю, что вы можете выкопать остальные.

Надеюсь, это поможет!

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