是否可以在Android图书馆计划中获取应用程序的上下文?(Is it possible to get application's context in an Android Library Project?)
我想获得在我的图书馆项目的一个类中的运行时引用/托管我的库的应用程序的上下文。 可能吗? 如果是,怎么样?
谢谢
更新我不希望我的用户将参数中的上下文传递给我的库项目,因为我的库项目可能会通过JNI调用,我不知道如何在JNI中获取上下文并将其传递给Java层。
I would like to get the context of application which has reference/hosted my library at run-time inside one class of my library project. Is it possible? If yes, how?
Thanks
Update I don't want my user to pass context in parameter to my library project because it is possible that my library project will be called through JNI and I have no idea how I can get context in JNI and pass it to Java layer.
原文:https://stackoverflow.com/questions/7157501
最满意答案
如“产生最佳路径”中的优化,而不是“可能的最快算法”。 在为目标路径搜索状态空间时,DFS可能会产生比BFS更长的路径。 请注意,BFS仅适用于未加权的操作; 如果不同的动作具有不同的权重,则需要类似A *的内容。
Optimal as in "produces the optimal path", not "is the fastest algorithm possible". When searching a state space for a path to a goal, DFS may produce a much longer path than BFS. Note that BFS is only optimal when actions are unweighted; if different actions have different weights, you need something like A*.
相关问答
更多-
如“产生最佳路径”中的优化,而不是“可能的最快算法”。 在为目标路径搜索状态空间时,DFS可能会产生比BFS更长的路径。 请注意,BFS仅适用于未加权的操作; 如果不同的动作具有不同的权重,则需要类似A *的内容。 Optimal as in "produces the optimal path", not "is the fastest algorithm possible". When searching a state space for a path to a goal, DFS may produ ...
-
BFS将根据分支因子使用更多的内存...但是,BFS是一个完整的算法...意味着如果您使用它来搜索最低深度的东西,BFS将为您提供最佳解决方案。 BFS空间复杂度是O(b^d) ...分支因子提高到深度(可以是大量的内存)。 另一方面,DFS对于空间好多了,可能会发现次优解决方案。 意思是,如果您只是从一个顶点到另一个顶点搜索路径,您可以在找到实际的最短路径之前找到次优解(并在那里停止)。 DFS空间复杂度是O(|V|) ...意味着它可以占用的最多的内存是最长的可能路径。 他们有相同的时间复杂性。 在实现 ...
-
什么时候可以使用DFS与BFS?(When is it practical to use Depth-First Search (DFS) vs Breadth-First Search (BFS)?)[2024-01-17]
这在很大程度上取决于搜索树的结构以及解决方案的数量和位置(又称搜索项)。 如果您知道一个解决方案距离树的根部不远,则广泛的首次搜索(BFS)可能会更好。 如果树很深,解决方案很少,深度优先搜索(DFS)可能需要很长时间,但是BFS可能会更快。 如果树非常宽,BFS可能需要太多的内存,所以可能是完全不切实际的。 如果解决方案频繁但位于树上,BFS可能是不切实际的。 如果搜索树非常深,您将需要限制搜索深度进行深度优先搜索(DFS),无论如何(例如迭代深化)。 但这些只是经验法则; 你可能需要进行实验。 That ... -
哪个最佳?(Which is optimal?)[2023-12-10]
在Clean Code中 ,Robert C. Martin建议Java编码人员尽可能将变量声明为要使用的地方。 变量的范围不应超过必要的范围。 将变量声明为接近它的使用位置有助于为读者提供类型和初始化信息。 不要过多地关注性能,因为JVM非常擅长优化这些东西。 而是专注于可读性。 顺便说一句:如果您使用的是Java 5或更高版本,则可以使用以下Java-5新特性来显着修改代码示例: foreach构造 仿制药 自动装箱 我重构了您的示例以使用上述新功能。 Listlist = new ... -
他们有相似的运行时间 ,但是任何一个问题的任何一个都可能会大大超过另一个问题,仅仅是由于访问单元的顺序。 在空间使用方面,BFS平均使用更多的内存用于树 ,但对于更一般的图,在某些情况下,它可以使用更少的内存。 特别是对于迷宫(如果我们将迷宫定义为只有一种方法可以从起始点到达一个没有回溯的单元,意味着它本质上是一棵树), BFS通常会使用更多的内存 ,因为我们需要保留多个路径内存,同时DFS只需要在任何给定时间跟踪单个路径。 对于更一般的网格,关于哪一个在记忆方面会更好,尤其是在考虑如何跟踪我们到目前为止访 ...
-
使用BFS而非DFS在有向图中查找周期的任何优点(any advantages of using BFS over DFS for finding cycles in directed graph)[2022-02-06]
在进行BFS时,您将在仅开发O(B^d)节点时找到循环,其中B是分支因子, d是从源到它的循环+标头的大小。 (如果BFS的来源在循环中,则循环的长度)。 DFS不能保证这一点,并且可能在找到周期之前发现整个图形。 When doing BFS, you will find the cycle while developing only O(B^d) nodes, where B is the branch factor and d is the size of the cycle + header fro ... -
BFS和DFS之间的区别(Difference between BFS and DFS)[2023-02-26]
当它说多个来源时,它指的是搜索的起始节点。 您会注意到算法的参数是BFS(G, s)和DFS(G) 。 这应该已经暗示BFS是单源而DFS不是,因为DFS不会将任何初始节点作为参数。 正如作者所指出的,这两者之间的主要区别在于BFS的结果总是树,而DFS可以是森林(树木的集合)。 这意味着,如果BFS是从节点s运行的,那么它将只构造从s可到达的节点的树,但如果图中有其他节点,则不会触及它们。 但是,DFS将继续搜索整个图,并构建所有这些连接组件的林。 正如他们所解释的那样,这是大多数用例中每种算法的期望结果 ... -
DFS,因为它是深度优先搜索,可能会卡在无限分支中,永远不会到达您正在寻找的顶点。 BFS在每次迭代时都经过与根相同距离的所有顶点,无论它们在哪个分支上,所以它最终会找到所需的顶点。 例: root - > v1 - > v2 - > v3 - > ...永远继续 | - >你。 在此示例中,如果DFS从根开始,然后继续到v1。 它永远不会到达你,因为它进入的分支是无限的。 BFS将从root到v1或u再到另一个。 DFS, since its a Depth first search, could get ...
-
这只有在BFS和DFS使用完全相同的顺序来遍历子项时才可能: 规则1: BFS Traversal : 4 3 5 1 2 8 7 6 | | | | | |-------| | | | DFS Traversal : 4|3 1 7 2 6|5 8 正如这个例子所示,我们可以很容易地知道(3 , 1 , 7 , 2 , 6) 3,1,7,2,6 (3 , 1 , 7 , 2 , 6)属于一个以 ...
-
Dfs与Bfs混淆(Dfs Vs Bfs confusion)[2021-10-20]
您的困惑可能来自于过多地考虑树木,但BFS和DFS可以在任何图形上运行。 考虑例如具有类似ABCA的循环的图。 如果从A开始先进行广度优先,则首先将B和C添加到列表中。 然后,您将弹出B ,除非它们被标记为已访问,否则您将在列表中添加C和A ,这显然是错误的。 如果您先从A开始深入,那么您将访问B并从那里转到C然后转到A ,除非A已被标记为已访问。 因此,总而言之,无论您采用哪种算法,都需要在第一次看到它时立即标记顶点。 但是,如果您只考虑DAG,您会发现事情变得容易一些,因为您根本没有像上面那样的循环。 ...