我有private static Boolean IsLegacyPathToPost(this HttpContext context)
{
return context.IsLegacyPath() && context.Request.Path.Value.Contains("/archives/");
}
public static void HandleLegacyRoutingMiddleware(this IApplicationBuilder builder)
{
builder.MapWhen(context => context.IsLegacyPathToPost(), RedirectFromPost);
}
private static void RedirectFromPost(IApplicationBuilder builder)
{
builder.Run(async context =>
{
await Task.Run(() =>
{
//urlHelper is instanciated but it's ActionContext is null
IUrlHelper urlHelper = context.RequestServices.GetService(typeof(IUrlHelper)) as IUrlHelper;
IBlogContext blogContext = context.RequestServices.GetService(typeof(IBlogContext)) as IBlogContext;
//Extract key
var sections = context.Request.Path.Value.Split('/').ToList();
var archives = sections.IndexOf("archives");
var postEscapedTitle = sections[archives + 1];
//Query categoryCode from postEscapedTitle
var query = new GetPostsQuery(blogContext).ByEscapedTitle(postEscapedTitle).WithCategory().Build();
var categoryCode = query.Single().Categories.First().Code;
//Redirect
context.Response.Redirect(urlHelper.Action("Index", "Posts", new { postEscapedTitle = postEscapedTitle, categoryCode = categoryCode }), true);
});
});
}
这样:
LinkedHashMap
我添加一个private LinkedHashMap<String, Column> columns = new LinkedHashMap<>();
:
Column
columns.put(name, column);
的具有侦听器的对象。
当我删除列时:
Column
听众仍然有效。
我尝试了columns.remove(name);
,确实有所帮助,听众不再活跃。
但WeakHashMap
不会保留广告订单。
我还尝试让WeakHashMap
将其设置为null,然后从地图中删除密钥但没有运气。听众仍然活跃。
对此有何建议?我错过了什么吗?
答案 0 :(得分:1)
您需要从列中删除它们而不是HashMap
答案 1 :(得分:0)
从onStart
移除时,我最终实施了onDestroy
和LinkedHashMap
生命周期事件。
受Android开发,活动和服务的影响