问题描述
|
我的应用程序有一些活动和后台服务。我的问题是,如果服务中包含上下文变量,如何确定当前打开了哪个活动?我需要执行此操作来指导我的服务采取的下一个动作。例如,
如果(上下文为activity_1){
//执行此操作
}否则,如果(上下文是activity_2){
//改为执行此操作...
}
这就是我要尝试做的基本要点。
帮助非常感谢。
解决方法
您可以在活动的每个“ 0”方法中设置一个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);