小编Ale*_*akh的帖子

如何全局处理MonoDroid未捕获的异常并防止应用程序崩溃

我正在尝试在我的monodroid应用程序中实现有效的异常处理,该应用程序是用Visual Studio的Xamarin.Android插件编写的.

我正在尝试处理两种类型的异常:

  1. 在前台(UI)线程
  2. 在后台(线程池)线程

在全局处理程序的两种情况下,我想:

  • 记录 - (提交分析事件)
  • 用户通知 - (提醒)

经过一定的调查后,我这里这里找到了一些答案,但除了AndroidEnvironment.UnhandledExceptionRaiser和AppDomain.UnhandledException之外什么都没有提出,它并不适用于所有情况.

我创建了一个简短的示例,我试图使用这两个处理程序:

AppDomain.CurrentDomain.UnhandledException += (s,e)=>
{
    System.Diagnostics.Debug.WriteLine("AppDomain.CurrentDomain.UnhandledException: {0}. IsTerminating: {1}", e.ExceptionObject, e.IsTerminating);
};

AndroidEnvironment.UnhandledExceptionRaiser += (s, e) =>
{
    System.Diagnostics.Debug.WriteLine("AndroidEnvironment.UnhandledExceptionRaiser: {0}. IsTerminating: {1}", e.Exception, e.Handled);
    e.Handled = true;
};
Run Code Online (Sandbox Code Playgroud)

然后在按钮单击时,我添加了以下代码以引发两种类型的异常:

//foreground exception
throw new NullReferenceException("test nre from ui thread.");
//background exception
ThreadPool.QueueUserWorkItem(unused =>
{
    throw new NullReferenceException("test nre from back thread.");
});
Run Code Online (Sandbox Code Playgroud)

因此,我对两种类型的异常都有不同的行为:

  1. 前景:
    • 两个处理程序都被提升了
    • 不可能阻止app崩溃 - 它会以任何方式崩溃(e.Handled = true只是被忽略)
  2. 背景:
    • 只引发第二个处理程序
    • 应用程序不会崩溃 …

android exception-handling unhandled-exception xamarin.android xamarin

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

主机名(IP地址)无法访问Jenkins服务器

我用自制软件在我的Mac OS X上设置了jenkins,它工作正常,http://localhost:8080或者http://127.0.0.1:8080 我无法通过hostname/ipaddress访问jenkins实例:

 1. http://myjenkinshost.local:8080
 2. http://192.168.0.100:8080
Run Code Online (Sandbox Code Playgroud)

即使从本地计算机(jenkins主机本身)也无法访问这两个链接.同时命令ping 192.168.0.100ping myjenkinshost.local工作正常.

networking jenkins

13
推荐指数
3
解决办法
2万
查看次数

Active Azure Sql连接超出了连接池限制

我们的Azure SQL数据库性能会在很长一段时间内显着降低,我们会在生产中解决问题.我们知道我们在其中一个表上有锁,但是这些锁不是死锁,它们是长锁,并且在一个小时左右的时间内性能恢复正常.我们试图找到关于如何获得这些长锁的所有可能场景(每个查询都超快,所有性能分析器都可以向我们展示导致长锁的原因).这个问题的原因如下图:

在此输入图像描述

Out连接池设置仅允许汇集200个连接.大多数时候,我们与数据库有大约10-20个开放/池化连接.然后突然一些活动连接开始增长,池完全被占用.虽然许多池连接保持在200以下,但我们看到许多活动连接使用sp_who2达到1.5k-2k连接(有时为4k-5k).

我使用Azure门户监控工具构建了相同的图表.它有不同的聚合期,但显示相同的问题: 在此输入图像描述

我们使用的连接字符串:

Data Source = [server] .database.windows.net; initial catalog = [database]; persist security info = True; user id = [user]; password = [password]; MultipleActiveResultSets = True; Connection Timeout = 30; Max Pool大小= 200;池=真;应用= [AppName的]

考虑到200个连接的连接池限制,这怎么可能?

ps:没有周期性任务,长时间运行的查询或其他任何工具,我们检查了与sp_who2数据库的所有活动连接.

c# sql-server connection-pooling azure entity-framework-6

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

Google Glass未被亚行列为Android设备

我正在尝试将玻璃器皿.APK部署到Google Glass设备,但ADB没有列出.我按照几个指南介绍了如何将Google Glass连接到Windows 8操作系统:

为了将设备连接到我的电脑,我做了以下操作.

1.安装USB驱动程序以为Android SDK Manager

2.更新android_winusb.inf文件并包含识别设备所需的行:https://dl.dropboxusercontent.com/u/83972129/android_winusb.inf

我在设备"硬件ID"设置下找到的这些ID:

  • USB\VID_18D1&PID_9001&REV_0216
  • USB\VID_18D1&PID_9001

3.连接设备并强制使用上面的驱动程序

https://dl.dropboxusercontent.com/u/83972129/android_device.png

看起来几乎和指南一样,它被安装为"Android ADB Interface"而不是"Android Composite ADB Interface"

然后我去了ADB工具并试图列出Android设备:

https://dl.dropboxusercontent.com/u/83972129/android_adb.png

谷歌玻璃不在那里,没有adb服务重启没有系统重启帮助.

5.因此,IDE无法看到设备,因此无法部署.APK

我该如何调试问题?这可能有什么问题?

usb android adb google-glass google-gdk

11
推荐指数
3
解决办法
2万
查看次数

如何在Google Play商店中启用Alpha/beta测试人员的自动更新

我已在Google Play商店配置了alpha/beta测试.为此目的创建了新的Google群组,并邀请用户加入群组.

当有新的更新时,用户必须通过alpha/beta链接下载并安装更新.是否有任何选项可以将更新推送到alpha/beta测试人员(比如prod Play Store的工作原理)?

beta android beta-testing google-groups google-play

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

注册异步javascript,声明性(静态)与动态

async静态地声明我的javascript与动态相比有什么区别吗?

静态的

<html>
<head>
  ...
</head>
<body>
  ...
  <div id='my-script-needs-me'></div>
  <script type="text/javascript" src="https://foo.bar/myscript.js" async>
  </script>
  ...
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

动态

<html>
<head>
  ...
</head>
<body>
  ...
  <div id='my-script-needs-me'></div>
  <script type="text/javascript">
      var myScript = document.createElement("script");
      myScript.src = 'https://foo.bar/myscript.js';
      myScript.async = !0;
      myScript.type = 'text/javascript';
      document.getElementsByTagName('head')[0].appendChild(myScript);
  </script>
  ...
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我注意到静态声明一个脚本让浏览器先检测到它并预加载(chrome + firefox).

我的目标是以一种async方式加载javascript,以便不阻止HTML呈现和其他脚本执行.Sametime,我希望它在下载后立即执行,记住它需要一个元素已经在DOM中.下载后,脚本将被执行并访问my-script-needs-mediv.一个限制,我不能改变脚本本身.

html javascript asynchronous

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

如何在MAC OS X上以当前用户(不是'jenkins')安装jenkins

我已在构建服务器的当前用户下配置了MAC OS X环境(SDK,许可证等),并希望重构构建代理的所有设置.Jenkins被选为一个不错的选择,但出于某种原因,在安装过程中它创建了一个新的用户jenkins并在其下启动应用程序,导致环境设置无法访问(没有SDK,也没有找到许可证).

是否可以在当前用户下安装jenkins?可能它可以安装在jenkins下,但然后在当前用户下启动?

我要考虑任何其他好的选择.

macos jenkins

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

iOS定期后台位置更新,不仅取决于重要的位置变化

我有一个应用程序必须报告用户位置,即使它背景甚至被杀死(终止).问题是应用程序应报告不少于1小时间隔的位置.

我正在使用重要的位置更改(SLC)来跟踪用户在旅途中的所有移动,但是一旦用户停止,则不会引发进一步的更新,并且应用程序没有机会提交新的位置(同时用户保持不变区域,但没有SLC).

为了涵盖这种情况,我开始使用Background fetches定期在后台发送更新位置,即使没有SLC).这里的问题是背景提取常常工作(自从我在另一个iOS 7.x应用程序中使用以来每20-30分钟)但现在使用iOS8/iOS9我每天只能获得一次,这是不可接受的在我的情况下.我已经执行了大量测试,开发了简单的后台获取应用程序,它在获取时添加本地通知.没有运气迫使它更频繁地工作.

这是我的AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
    return YES;
}

- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{    
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    UILocalNotification *localNotification = [[UILocalNotification alloc] init];
    NSDate *now = [NSDate date];
    localNotification.fireDate = now;
    localNotification.alertBody = [NSString stringWithFormat:@"Background fetch!"];
    localNotification.soundName = UILocalNotificationDefaultSoundName;
    NSInteger number = [UIApplication sharedApplication].applicationIconBadgeNumber;
    number++;
    localNotification.applicationIconBadgeNumber = number;
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

    completionHandler(UIBackgroundFetchResultNewData);
}
Run Code Online (Sandbox Code Playgroud)

这里所做的就是在每次后台提取时添加本地通知.我总是用UIBackgroundFetchResultNewData完成后台执行.

您对如何强制后台提取更频繁地工作(或证明链接不再可能)有任何建议吗?我们也欢迎任何符合我要求的替代解决方案!

iphone locationmanager ios

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

在构建Xamarin.iOS项目时,NuGet包恢复失败,错误代码为127

我正在尝试在Xamarin Studio中构建一个Xamarin.iOS项目.Nuget包恢复已启用但在任何构建期间我收到以下错误:

/.nuget/NuGet.targets:错误:命令'mono --runtime = v4.0.30319"/.nuget/NuGet.exe"install"/ProjectName/packages.config"-source"" - RequireConsent -solutionDir"/"exited代码:127.(ProjectName)

从终端运行相同的命令没有任何问题,并使用以下输出消息完全正常:

恢复NuGet包...要防止NuGet在构建期间下载包,请打开"Visual Studio选项"对话框,单击"包管理器"节点,然后取消选中"允许NuGet下载丢失的包".

.nu​​get/NuGet.exe和.nuget/NuGet.targets是最新的.使用禁用的nuget恢复项目.csproj文件编译工作正常.

请指教.

xamarin.ios nuget xamarin xamarin-studio nuget-package-restore

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

UITableViewCell内的UITableView具有动态单元格高度

我有一个动态的项目列表,每个项目可以有不同的teamplate /布局(和高度).其中一个项目类型可以有一个内部的项目列表供选择,定期5-6行,每行有不同的高度.

如果我尝试进一步描述它,在我的场景中,我在另一个tableview(#master)的tableviewcells(#master-cell)中有一个tableview(#slave).此外,我的#slave tableview中的单元格(#slave-cell)也可能具有不同的高度.所以我需要布局我的#slave让#master自动计算并更新它的大小.

在此输入图像描述

我有内表(#slave)的问题.在自动布局的情况下,为了适应所有单元格空间,表格将与UILabel或其他控件不同地折叠.所以我需要的是获得#slave表的预计大小并设置#slave的#slave =内容高度的高度.

我找到了类似的帖子,如果所有行都有相同的高度,但我使用动态高度的自定义行,那么tableView.contentSize.Height给我无效的结果(基本上只是乘以rowNumbers*estimatedRowHeight,你可以在屏幕截图上看到它) ,主要项目#3有4个内部单元格).即使在调用#slave.reloadData之后我也无法达到那么大.

构建这种UI的正确方法是什么?

附带测试项目的源代码(Xamarin.iOS)

uitableview xamarin.ios ios autolayout xamarin

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