2010-10-22 3 views
1

J'ai une application qui a un service et 2 activités.Une activité (la principale) est une activité de préférences et l'autre est une activité thématique de dialogue. Le service doit de temps en temps ouvrir uniquement l'activité thématique de dialogue (en utilisant FLAG_ACTIVITY_NEW_TASK). Le problème est que lorsque l'activité des préférences est ouverte en arrière-plan (par exemple l'utilisateur appuie sur la touche HOME au lieu de BACK, l'activité est OnPause) et le service tente d'ouvrir l'activité thématique de dialogue, l'activité principale est également ouverte. au premier plan). Je ne veux pas ça. Alors, comment puis-je ouvrir uniquement l'activité thématique du service, sans que l'activité principale n'apparaisse?Ouvrir une seule activité, sans l'activité principale

Android Manifest .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> 

Et du service:

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

       startActivity(intent); 
+1

Cela ressemble à une idée terrible. Ne pas ouvrir les fenêtres sans l'intervention de l'utilisateur – Falmarri

+0

Ceci est un autre problème, oublions le service et disons que l'activité de dialogue est ouverte à partir d'une autre activité. Le problème persiste – Alex

+0

Si vous avez besoin de voir du code ... veuillez poster les tags de votre AndroidManifest.xml et le code de lancement d'activité de votre service. –

Répondre

0

Alex, je crois que tout ce que vous voulez est d'afficher l'activité des préférences une seule fois & alors il doit mourir (ou disons finish()).

Dans ce cas, vous pouvez remplacer onResume de l'activité des préférences pour terminer votre activité préférences après la reprise après une pause

@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 
} 

EDIT -Pour savoir si l'activité a été interrompue, vous devez passer outre OnPause(). Je pense que vous pouvez creuser le reste.

J'espère que ça aide!

Questions connexes