Java Android:ActivityCompat.requestPermissions需要活动而不是上下文:/

Java Android:ActivityCompat.requestPermissions需要活动而不是上下文:/,java,android,singleton,Java,Android,Singleton,我正在调用ActivityCompat.requestPermissions以获得android m下的权限,但是,这需要参数中包含一个活动。这将是好的,除了我想从单例调用它,并且单例可以被应用程序中的任何活动使用 ActivityCompat.requestPermissions(context, PERMISSIONS_LOCATION, REQUEST_LOCATION); 我希望避免在singleton中保留对任何活动的引用,因为这肯定会导致内存泄漏,而且我更希望singleton根本

我正在调用ActivityCompat.requestPermissions以获得android m下的权限,但是,这需要参数中包含一个活动。这将是好的,除了我想从单例调用它,并且单例可以被应用程序中的任何活动使用

ActivityCompat.requestPermissions(context, PERMISSIONS_LOCATION, REQUEST_LOCATION);
我希望避免在singleton中保留对任何活动的引用,因为这肯定会导致内存泄漏,而且我更希望singleton根本不保留活动,因为它需要在所有调用的活动中使用无用的代码(每个活动都必须在getInstance()中包含额外的参数)为了让单身汉能够进行活动,单身汉需要从某处获取活动)


现在,从技术上讲,我可以获取一个活动,然后在请求权限后直接将其设置为null,但是在我调用singleton的每个活动中,仍然会留下大量无用的活动参数。对于这个问题,有没有一个更优雅的解决方案,而我却没有看到

有关requestPermissions的文档指出,如果您没有在清单中包含权限,则activity参数是要在其中显示弹出窗口的目标活动,为此,该方法要求您传递活动而不是上下文,因为在完成请求权限任务后,它会将结果返回给调用活动(即作为参数传递给方法的活动)。如果您对通过singleton实现这一点非常坚决,那么我建议您创建一个函数,该函数也接受参数中的活动和回调,因为无论是否授予权限,您都需要处理回调

如果您确定上下文变量保存对活动的引用。@Bhargav我使用getApplicationContext()作为上下文,以避免从活动传递上下文。我猜我不能将其转换为活动?如果它需要活动作为对象,从一个活动移动到另一个活动,那么它的值应该更新。我想,这样做并不能解决Singleton的目的。运行时请求参见此示例,[link]对,但目标活动是必须通过的,只是为了决定在何处显示请求权限的对话框。好的,这很有意义。我不明白他们为什么要求一个活动开始。我想我只需要传入应用程序中每个调用类的活动引用:/