小编Lay*_*ldK的帖子

应用程序在启动器中按图标按下时完全重新启动应用程序

我正在尝试将我的第一个Android应用程序的发布版本发送给几个测试人员.但是,我遇到了问题.当您退出应用程序,然后通过其图标启动它重新输入它时,它会重新启动整个应用程序,而不是返回到它以前的位置.即使您在退出后立即重新输入,也会发生这种情况.但是,如果我按住主页按钮并通过最近的应用列表启动它,则不会发生这种情况.

我在网上搜索了其他有这个问题的人,但也有一些,但没有人对他们为什么会这样做有一个可靠的答案.在旧的问题中建议将启动模式设置为清单文件中的singletask或singleinstance,但这对我没有帮助,而且 - 根据我的理解,android的默认行为是返回到任务的先前状态在这种情况下,所以我不知道为什么我需要特殊的清单选项才能做到这一点.

关于这个问题最奇怪的是,如果我使用eclipse和调试器将应用程序放在我的手机上,则不会出现此问题.我甚至不需要连接到调试器,似乎只要我有应用程序的调试版本,问题就不会发生.但是,如果我使用发布版本(我使用Eclipse中的Android工具 - 导出签名应用程序包菜单选项创建它),则会出现问题.如果有人对导致这种情况有什么了解,我很乐意听到你的想法.

android android-launcher

67
推荐指数
5
解决办法
2万
查看次数

使用DDD和AutoMapper,您如何在单个工作单元内的多个服务中处理相同的聚合根?

我正在尝试在非基于Web的项目中学习和实现域驱动设计.我有一个主循环,它将在单个工作单元中对很多实体执行多个过程.除非整个循环的工作成功,否则我不希望任何更改被持久化.我正在使用AutoMapper将持久性模型转换为存储库中的域模型,我的服务正在使用存储库在工作之前检索数据.

有一些DDD元素与我的项目不能很好地工作,我希望有人可以告诉我整个过程有什么问题.

以下是我正在努力解决的DDD想法:

  • 当进程涉及多个聚合根相互交互时,应使用域服务
  • 您应该将聚合根ID传递给域服务,然后使用存储库加载它们
  • 存储库应该返回它从映射的持久性模型构造的域模型(在这种情况下,我使用的是AutoMapper)

这是我正在尝试做的一个例子.

using (var scope = serviceProvider.CreateScope())
            {
                var unitOfWork = scope.ServiceProvider.GetService<IUnitOfWork>();
                var aggregate1Repo = scope.ServiceProvider.GetService<IAggregate1Repository>();
                var aggregate2Repo = scope.ServiceProvider.GetService<IAggregate2Repository>();
                var aggregate3Repo = scope.ServiceProvider.GetService<IAggregate3Repository>();
                var firstService = scope.ServiceProvider.GetService<IFirstService>();
                var secondService = scope.ServiceProvider.GetService<ISecondService>();

                var aggregate1 = aggregate1Repo.Find(1); //First copy of aggregate1
                var aggregate2 = aggregate2Repo.Find(1000); 
                var aggregate3 = aggregate3Repo.Find(123); 

                aggregate1.DoSomeInternalWork();

                firstService.DoWork(aggregate1.Id,aggregate2.Id); 
                secondService.DoWork(aggregate1.Id,aggregate3.Id);

                aggregate1Repo.Update(aggregate1);
                unitOfWork.Commit();
            }
Run Code Online (Sandbox Code Playgroud)

Aggregate1Repo:

public class Aggregate1Repository
{
    private readonly AppDBContext _dbContext;
    private IMapper _mapper;

    public Aggregate1Repository(AppDBContext context, IMapper mapper)
    {
        _dbContext = context; …
Run Code Online (Sandbox Code Playgroud)

c# domain-driven-design repository-pattern automapper asp.net-core

1
推荐指数
1
解决办法
1337
查看次数