我正在尝试将我的第一个Android应用程序的发布版本发送给几个测试人员.但是,我遇到了问题.当您退出应用程序,然后通过其图标启动它重新输入它时,它会重新启动整个应用程序,而不是返回到它以前的位置.即使您在退出后立即重新输入,也会发生这种情况.但是,如果我按住主页按钮并通过最近的应用列表启动它,则不会发生这种情况.
我在网上搜索了其他有这个问题的人,但也有一些,但没有人对他们为什么会这样做有一个可靠的答案.在旧的问题中建议将启动模式设置为清单文件中的singletask或singleinstance,但这对我没有帮助,而且 - 根据我的理解,android的默认行为是返回到任务的先前状态在这种情况下,所以我不知道为什么我需要特殊的清单选项才能做到这一点.
关于这个问题最奇怪的是,如果我使用eclipse和调试器将应用程序放在我的手机上,则不会出现此问题.我甚至不需要连接到调试器,似乎只要我有应用程序的调试版本,问题就不会发生.但是,如果我使用发布版本(我使用Eclipse中的Android工具 - 导出签名应用程序包菜单选项创建它),则会出现问题.如果有人对导致这种情况有什么了解,我很乐意听到你的想法.
我正在尝试在非基于Web的项目中学习和实现域驱动设计.我有一个主循环,它将在单个工作单元中对很多实体执行多个过程.除非整个循环的工作成功,否则我不希望任何更改被持久化.我正在使用AutoMapper将持久性模型转换为存储库中的域模型,我的服务正在使用存储库在工作之前检索数据.
有一些DDD元素与我的项目不能很好地工作,我希望有人可以告诉我整个过程有什么问题.
以下是我正在努力解决的DDD想法:
这是我正在尝试做的一个例子.
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