Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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 在构建Android库时,我可以使用什么模式来支持活动中配置的回调_Java_Android_Android Activity_Callback_Singleton - Fatal编程技术网

Java 在构建Android库时,我可以使用什么模式来支持活动中配置的回调

Java 在构建Android库时,我可以使用什么模式来支持活动中配置的回调,java,android,android-activity,callback,singleton,Java,Android,Android Activity,Callback,Singleton,我正在为我们的平台构建一个Android库,我正在努力解决如何允许我的用户传递在库中特定时间被调用的函数 库启动一个活动,该活动有一些指向我的https API的服务类。(过于简单,但希望足够详细) 我想为我的用户提供一种方法来传递一个回调,该回调为API生成auth令牌,允许他们自己生成它。可能接口看起来像字符串getAuthToken() 但我怎样才能做到这一点而不在某个时刻失去状态呢?我在库启动时使用了一个单例(它启动了库的主要活动的意图),但是当进程被终止并且您尝试返回它时,应用程序当然

我正在为我们的平台构建一个Android库,我正在努力解决如何允许我的用户传递在库中特定时间被调用的函数

库启动一个活动,该活动有一些指向我的https API的服务类。(过于简单,但希望足够详细)

我想为我的用户提供一种方法来传递一个回调,该回调为API生成auth令牌,允许他们自己生成它。可能接口看起来像
字符串getAuthToken()

但我怎样才能做到这一点而不在某个时刻失去状态呢?我在库启动时使用了一个单例(它启动了库的主要活动的意图),但是当进程被终止并且您尝试返回它时,应用程序当然会崩溃,单例是在活动开始之前设置的


我是否遗漏了Java或Android中解决这一问题的一些明显模式?

为什么在单例中需要一个活动的上下文?这看起来是个糟糕的设计。您不需要它来发出网络请求

当你呈现一个活动时,你控制了它所涉及的所有生命周期。是的,当你旋转屏幕时,android会重新创建它,这是一个巨大的痛苦,但为此,你可以使用:


为什么你需要一个活动的上下文?这看起来是个糟糕的设计。您不需要它来发出网络请求

当你呈现一个活动时,你控制了它所涉及的所有生命周期。是的,当你旋转屏幕时,android会重新创建它,这是一个巨大的痛苦,但为此,你可以使用:



您对
SDK
的意思是什么?它代表软件开发工具包,我不认为你在创建它。对不起,这是一个Android库。我们正在为我们的平台构建SDK。但它是一个库SDK和库之间没有定义的界限。在哪一点上,库变成了SDK?例如,你有一张10x15的照片,你把它切成两半,这些照片还能被命名为照片吗?我会同意的。但是如果你把它们切成10万片,它们还能被命名为照片吗?关于library/SDK的讨论也是如此。希望我现在已经排除了对SDK的所有提及。很明显,我指的是一个库:)我实际上试图为你辩护)但你是对的,有时我来这里是为了争论一些东西:)你说的
SDK
是什么意思?它代表软件开发工具包,我不认为你在创建它。对不起,这是一个Android库。我们正在为我们的平台构建SDK。但它是一个库SDK和库之间没有定义的界限。在哪一点上,库变成了SDK?例如,你有一张10x15的照片,你把它切成两半,这些照片还能被命名为照片吗?我会同意的。但是如果你把它们切成10万片,它们还能被命名为照片吗?关于library/SDK的讨论也是如此。希望我现在已经排除了对SDK的所有提及。很明显,我指的是图书馆:)我实际上试图为你辩护)但你是对的,有时我来这里是为了争论一些东西:)嘿,我从来没有说过我的单身汉需要背景。我觉得我快要发疯了,因为我显然错过了其他人都能得到的东西。我需要我的用户通过回调。该回调是一个实例。如果我的库的入口点是一项活动,我就不能将其交给该活动,对吗?它必须是可打包的还是可序列化的?在这种情况下,ViewModel如何帮助我?在这种情况下,只需创建一个常规的单音,它可以容纳一个数组或对象,从而实现回调。到时候,只要对它们感兴趣,并向那些还活着的人发送通知就行了。我有一个常规的单例,但没有使其可序列化。当进程死亡时,我如何使其保持活着?你不能,多亏了Java垃圾收集器。从理论上讲,如果一个是静态的,它将和应用程序一样长。如果它被破坏了——如果您被重新创建的流程与最初创建的流程相同,因为所有应用程序都是全新的。好的,谢谢你,这非常有帮助。也许这是一个不同的问题,我的静态单例。嘿,我从来没有说过我的单例需要上下文。我觉得我快要发疯了,因为我显然错过了其他人都能得到的东西。我需要我的用户通过回调。该回调是一个实例。如果我的库的入口点是一项活动,我就不能将其交给该活动,对吗?它必须是可打包的还是可序列化的?在这种情况下,ViewModel如何帮助我?在这种情况下,只需创建一个常规的单音,它可以容纳一个数组或对象,从而实现回调。到时候,只要对它们感兴趣,并向那些还活着的人发送通知就行了。我有一个常规的单例,但没有使其可序列化。当进程死亡时,我如何使其保持活着?你不能,多亏了Java垃圾收集器。从理论上讲,如果一个是静态的,它将和应用程序一样长。如果它被破坏了——如果您被重新创建的流程与最初创建的流程相同,因为所有应用程序都是全新的。好的,谢谢你,这非常有帮助。也许这是一个不同的问题,我与我的静态单身汉,然后。