2011-06-15 52 views
2

我的應用程序有一些活動和一個後臺服務。我的問題是,如果我在服務中有上下文變量,我怎麼知道哪些活動當前打開?我需要這樣做來指導我的服務所採取的下一步行動。例如,Android - 找出用戶當前正在使用的上下文/活動?

如果(上下文activity_1)如果(上下文activity_2){// 採取此措施 }其他{// 做到這一點,而不是... }

這是基本要點我正在嘗試做什麼。

非常感謝。

回答

2

您可以在您的活動的每個onResume()方法中設置一個SharedPreferences條目,並從服務中讀取該值。要保持乾淨,你可以寫,做一個活動,然後從它擴展所有的活動:在服務

public class MyActivity extends Activity { 
    private static final String PREFS_NAME = "MyPrefsFile"; 
    @Override 
    protected void onResume() { 
     getContext().getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE) 
      .edit() 
      .putInt("activtiyIdRunning", getActivityId()) 
      .commit(); 
     super.onResume(); 
    } 
    abstract protected int getActivityId(); 
} 

public class MyConcreteActivity1 extends MyActivity { 
    @Override 
    protected int getActivityId() { 
     return 1; 
    } 
    // your normal code 
} 

不僅僅是致電:

int currentActivity = getContext().getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE) 
    .getInt("activityIdRunning",-1); 
相關問題