Okay... i finally found a solution for this problem. At the end, inheriting the Application have been the right option. I am saving the last paused activity and if the same one gets resumed at any time, i display the dialog. Also i have to take care of configuration changes, which causes the activity to restart. If someone gets to the same problem as me, heres the code:
package at.***.**********.util;
import org.holoeverywhere.app.Application;
import android.app.Activity;
import android.content.ComponentCallbacks;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
public class MyCustomApplication extends Application {
private String lastActivity = "";
private Boolean configChanged = false;
public Boolean getConfigChanged() { return configChanged; }
public void setConfigChanged(Boolean configChanged) { this.configChanged = configChanged; }
private ActivityLifecycleCallbacks activityCallback = new ActivityLifecycleCallbacks() {
@Override
public void onActivityStopped(Activity activity) { }
@Override
public void onActivityStarted(Activity activity) { }
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) { }
@Override
public void onActivityDestroyed(Activity activity) { }
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) { }
@Override
public void onActivityResumed(Activity activity) {
if (activity.getClass().getName().equals(lastActivity) && !getConfigChanged()) {
Log.v(activity.getClass().getName(), "Make activity show password dialog");
}
setConfigChanged(false);
}
@Override
public void onActivityPaused(Activity activity) {
lastActivity = activity.getClass().getName();
}
};
private ComponentCallbacks componentCallback = new ComponentCallbacks() {
@Override
public void onLowMemory() { }
@Override
public void onConfigurationChanged(Configuration newConfig) {
setConfigChanged(true);
}
};
@Override
public void onCreate() {
registerActivityLifecycleCallbacks(activityCallback);
registerComponentCallbacks(componentCallback);
Log.v("Application startet", "Application startet");
super.onCreate();
}
@Override
public void onTerminate() {
unregisterActivityLifecycleCallbacks(activityCallback);
unregisterComponentCallbacks(componentCallback);
super.onTerminate();
}
}
if you ever have to restart your activity you may call:
((MyCustomApplication)getApplication).setconfigChanged(true);
Don't forget, to tell Android to use your custom application in manifest:
<application
android:name="at.***.**********.util.MyCustomApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:hardwareAccelerated="true" >
I'm sure there might be a better way but i didn't find one yet. Thanks alot guys!