获取当前运行活动的上下文

时间:2011-10-28 02:45:20

标签: java android

我想知道是否有办法在android上获取当前运行活动的上下文。例如,我有一个活动类,它正在运行。我想要的是调用另一个简单类来运行从Activity Class调用的一些函数。通过这样做,我需要在Simple Class上设置Activity类的上下文;另一方面,我需要具有当前运行活动的上下文,以便我的Simple类可以实际运行从当前运行活动调用的函数。

以下是我项目的软代码。

public class Main1 extends Activity {
    private static GetAPNsInfo getAPNsInfo = new GetAPNsInfo();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
                getAPNsInfo.doSomething();
    }
}

public class GetAPNsInfo {
    public void doSomething() {
        Button button = currentRunningActivityContext.findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
            }
        });
    }
}

最后,我对这个主题的目的是,我需要一个很好的方法来获取当前运行的活动信息。

这是我找到自己的解决方案。但它并没有完全解决这个问题。我们可以在Manifest.xml中添加一个接收器。这将运行后台应用程序。

<receiver android:name=".RunningActivityCapture">
        <intent-filter android:priority="-1">
            <action android:name="android.intent.action.NEW_OUTGOING_CALL"></action>
        </intent-filter>

    </receiver>

后台应用程序界面如下所示:

public class RunningActivityCapture extends BroadcastReceiver {

    @Override
    public void onReceive(Context aContext, Intent intent) {
        String action = intent.getAction();

        if (action.equals(Intent.ACTION_ALL_APPS)) {
            Activity activty = intent.getCurrentActivity();
            Session session = new Session();
            session.setRunningActivity(activty);
        }
        return;
    }
}

我只从会话类中获取从后台应用程序设置的活动。这是我解决这个问题的第一个想法。但是代码不正确。所以我需要你的帮助。

1 个答案:

答案 0 :(得分:3)

如果您在helper类中询问如何使用此MainActivity,则可以将Activity本身传递到您的类中,因为活动 是一个Context。所以你的构造函数将是:

public GetAPNsInfo(Context context) {
    ...
}

将上下文存储在字段中并稍后使用。您将使用

进行初始化
private static GetAPNsInfo getAPNsInfo = new GetAPNsInfo(this);

如果您询问如何在应用程序中获取 ANY 活动的上下文,我认为不推荐这样做。