Activity aus Service heraus starten. Wie so kommt auch immer die Start Activity?

  • 11 Antworten
  • Letztes Antwortdatum
GENiALi

GENiALi

Fortgeschrittenes Mitglied
11
Hallo

Ich will dem Anwender die Möglichkeit geben sich über ein Ereignis via einer Activity informieren zu lassen. Nicht nur via NotificationManager. Ich kann zwar meine Wunschactivity via Service starten, aber dabei wird im Hintergrund auch immer die Startactivity gestartet. Das sehe ich, weil die neue Activity einen transparenten Hintergrund hat.

Code:
Intent dialogIntent = new Intent(getBaseContext(), AlarmActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getBaseContext().startActivity(dialogIntent);

Wie muss ich die Activity aus dem Service heraus öffnen damit die Startactivity nicht auch kommt?
 
hast du mal versucht das getBaseContext() in der dritte Zeile durch getApplication() zu ändern?
 
Madlip schrieb:
hast du mal versucht das getBaseContext() in der dritte Zeile durch getApplication() zu ändern?
Jap. Genau das selbe. Im Background erscheint dann die Mainactivity.
 
Andere Frage, hast du die MainActivity mal mit finish() beendet?

Ich hab das gefühl das es an den Android Stack liegt, im Grunde genommen ist es ja so, dass die neue Activity auf die alte "gelegt" wird.

siehe: Tasks and Back Stack | Android Developers
 
Explizit habe ich die nicht beendet. Nur mit dem Backbutton raus gegangen. Der Gedanke ist aber gut. Das muss ich mir mal noch anschauen. Aber das könnte mir ja mit allen anderen Activities auch passieren. Geht jemand auf die Settings, mit Home raus, es kommt eine Info rein, schon hat er die Settings im Hintergrund.

Komisch finde ich auch das ich in die onCreate Methode von AlarmActivity komme. Danach wird noch onResume von der MainActivite aufgerufen.
 
wenn mit home rausgehst, wird nicht mehr settings druntergelegt.

madlib's gedanke war ganz gut, aber ohne weitere infos wird dir hier wohl nicht geholfen werden können.
 
in der tat ... echt verwirrendes Verhalten ...

Halt uns mal auf den laufenden :)
 
swordi schrieb:
wenn mit home rausgehst, wird nicht mehr settings druntergelegt.

madlib's gedanke war ganz gut, aber ohne weitere infos wird dir hier wohl nicht geholfen werden können.

Na ja. Was fehlt noch an Infos das es jemandem "click" macht? :smile:

Der ursprüngliche Beitrag von 11:47 Uhr wurde um 11:52 Uhr ergänzt:

Ich habe jetzt gerade mal kurz einen Test gemacht. Ich habe meine App abgeschossen. Mein LGO3D ist gerootet, geht also. Danach läuft der Service wieder an. Ich habe also keine Activity mehr im Stack. Wenn ich dann ein Event auslöse das mit die AlarmActivity laden soll ist auch wieder die MainActivity im Background. :sad:
 
na dann zeig uns doch mal deine MainActivity und deine AlarmActivity
 
BaseActivity:
Ist ziemlich umfangreich zeichnet sich aber primär für die Werbung und ActionbarSherlock verantwortlich.

Main Activity:
Code:
public class Main extends BaseActivity
{
	private final static String	APP_PNAME		= "ch.geniali.com2cal";
	private Boolean				openRateDialog	= false;
	
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		setContentView(R.layout.main);
		
		super.onCreate(savedInstanceState);
		
		if(AppRater.getOpenRatingDialog())
		{
			showRateDialog(this);
			AppRater.setOpenRatingDialog(false);
			openRateDialog = true;
		}
	}

AlarmActivity:
Code:
public class AlarmActivity extends BaseActivityAdds
{
	private Button	btnOK;
	
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
		
		setContentView(R.layout.alarm);
		
		this.btnOK = (Button)findViewById(R.id.btnOK);
		super.onCreate(savedInstanceState);
		
		AlarmManager.setIsAlarmInfoOpen(true);
		AlarmManager.setAlarmActivity(this);
		
		this.btnOK.setOnClickListener(new View.OnClickListener()
			{
				@Override
				public void onClick(View target)
				{
					AlarmManager.setIsAlarmInfoOpen(false);
					finish();
				}
			});
		
		TextView tvMessage = (TextView)findViewById(R.id.tvMessage);
		
		
		// !! Prototyp !!
		if(tvMessage != null && C2C.getAlarme().size() > 0)
		{
			String newMessage = C2C.getAlarme().get(0).getMessage() + "\n----------------\n";
			String oldMessage = tvMessage.getText().toString();
			
			tvMessage.setText(newMessage + oldMessage);
		}
	}
//Sonst eigentlich nichts mehr
 
@GENiALi

hab aktuell genau das selbe problem.

Hast du mitlerweile ne Lösung gefunden??
 

Ähnliche Themen

AnnaBauer21
Antworten
14
Aufrufe
1.190
AnnaBauer21
AnnaBauer21
D
Antworten
5
Aufrufe
573
swa00
swa00
Zurück
Oben Unten