我的应用程序有一些活动和后台服务。我的问题是,如果我在服务中有上下文变量,我怎么知道哪个活动当前是打开的?我需要这样做来指导我的服务所采取的下一步行动。例如,
if(context is activity_1){ //采取这个行动 } else if(context is activity_2){ //这样做...... }
这是我正在尝试做的基本要点。
非常感谢。
答案 0 :(得分:2)
您可以在活动的每个onResume()
方法中设置SharedPreferences条目,并从服务中读取该值。为了保持清洁,你可以编写一个Activity,然后从中扩展你的所有活动:
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);