Android(Java)中是否存在保留逻辑上下文的机制,类似于.NET的ExecutionContext
?通过逻辑上下文,我的意思是一旦保留了信息,以后就可以在整个执行线程中访问,这意味着它可以在异步调用中存活下来。例如:跨异步调用的流执行/逻辑上下文
handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
System.out.print(LogicalContext.get("foo")); //should print "bar"
}
};
LogicalContext.set("foo", "bar");
handler.postDelayed(r, 1000);
为了澄清,我知道关闭。然而,我需要的是一种自动机制,它不需要我捕捉每次想要传递的上下文。为了进一步澄清,单纯的静态字段也不会这样做,因为我希望不同的逻辑执行线程具有不同的上下文(当我调用LogicalContext.set
并开始通过任何异步调用进行流动)。
在C#中它应该是这样的:
CallContext.LogicalSetData("foo", "bar");
await Task.Run(() => Console.WriteLine(CallContext.LogicalGetData("foo")));
如果这是不可能的,我会满足于这种机制的一个特例 - 确定当前的执行逻辑流程/线程是否起源于IntentService
。
完全http://stackoverflow.com/questions/5754281/inheritable-thread-local-in-net :)相反 –