Android - 找出用户当前所在的上下文/活动?

时间:2011-06-15 18:44:59

标签: java android service android-activity

我的应用程序有一些活动和后台服务。我的问题是,如果我在服务中有上下文变量,我怎么知道哪个活动当前是打开的?我需要这样做来指导我的服务所采取的下一步行动。例如,

if(context is activity_1){     //采取这个行动 } else if(context is activity_2){     //这样做...... }

这是我正在尝试做的基本要点。

非常感谢。

1 个答案:

答案 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);