Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取当前正在运行的活动的上下文_Java_Android - Fatal编程技术网

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

Java 获取当前正在运行的活动的上下文,java,android,Java,Android,我想知道是否有办法获得android上当前运行活动的上下文。例如,我有一个活动类,它正在运行。我想要的是调用另一个简单的类来运行一些从Activity类调用的函数。通过这样做,我需要在简单类上设置活动类的上下文;另一方面,我需要有当前运行活动的上下文,以便我的简单类能够实际运行从当前运行活动调用的函数 下面是我的项目中的软代码 public class Main1 extends Activity { private static GetAPNsInfo getAPNsInfo = ne

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

下面是我的项目中的软代码

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>

我只从会话类获取活动,该设置来自我的后台应用程序。这是我解决这个问题的第一个想法。但代码是不正确的。因此,我需要您的帮助。

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

public GetAPNsInfo(Context context) {
    ...
}
将上下文存储在字段中并稍后使用。您将使用

private static GetAPNsInfo getAPNsInfo = new GetAPNsInfo(this);

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

如果您询问如何在助手类中使用此
MainActivity
,您可以将活动本身传递到类中,因为活动是上下文。因此,您的构造函数将是:

public GetAPNsInfo(Context context) {
    ...
}
将上下文存储在字段中并稍后使用。您将使用

private static GetAPNsInfo getAPNsInfo = new GetAPNsInfo(this);

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

这是我不需要的。我已经在我的线程中添加了一个最终目的。我想要的是获取当前跑步活动信息。如果有上百个任务在上百个活动上运行相同的东西,那么我需要为每个活动设置上下文吗?如果这样做,这将成为一项巨大的工作。也许不建议在我的应用程序中获得任何活动。但是应该有一种方法可以只获得一项顶级活动。我可以用接收器来解决这个问题吗?你为什么要这么做?也许有更好的方法,也许有更好的方法来捕捉顶级活动。我正在搜索ActivityManager和RunningTaskInfo。这些应该会有帮助。如果你尝试这样做,很可能只会导致更多的问题。例如,在您的问题中,您的代码使用
findviewbyd
在当前运行的活动中查找按钮。然而,当那个活动没有这样的按钮时会发生什么呢?这是我不需要的。我已经在我的线程中添加了一个最终目的。我想要的是获取当前跑步活动信息。如果有上百个任务在上百个活动上运行相同的东西,那么我需要为每个活动设置上下文吗?如果这样做,这将成为一项巨大的工作。也许不建议在我的应用程序中获得任何活动。但是应该有一种方法可以只获得一项顶级活动。我可以用接收器来解决这个问题吗?你为什么要这么做?也许有更好的方法,也许有更好的方法来捕捉顶级活动。我正在搜索ActivityManager和RunningTaskInfo。这些应该会有帮助。如果你尝试这样做,很可能只会导致更多的问题。例如,在您的问题中,您的代码使用
findviewbyd
在当前运行的活动中查找按钮。但是,当该活动没有此类按钮时会发生什么?