小编d37*_*3ur的帖子

Android - 跨多个活动实现LocationListener的最佳方式

我已经坚持这个问题很长一段时间了.我正在开发一个在几个不同的活动中广泛使用位置的应用程序.我发现的每个示例都在每个Activity中使用单独的LocationListener.这在我的情况下是不可行的.

我想知道在多个活动中跟踪用户位置的最有效方法是什么.现在我已经创建了一个实现LocationListener的服务,并使用广播来更新Activity基类中的静态lat和long字段.这意味着该服务始终在运行,这并不理想.但是,如果我关闭服务并仅在需要时重新启动它,那么获得一个好位置需要时间.我需要Activity的onCreate()中的位置数据.如果我尝试在activity基类中实现它,它也是一样的.如果我经常在onResume/onCreate中注册监听器并在onPause()中注销它,则开始接收更新需要花费太多时间.我还试图创建一个我可以绑定的服务,所以它只在我需要一个位置时启动.但是我遇到了同样的问题,绑定到服务并开始获取更新需要很长时间.

我现在使用的服务是有效的,但是从我读过的所有内容中,我不应该使用不断运行的服务来处理这样的琐碎事情.但该应用程序的重点是根据用户的当前位置提供相关数据.所以我有一个只在后台运行的服务,并定期提供更新.导致我在这一点上重新检查设计的一个主要问题是,我最近发现如果用户在没有打开GPS的情况下启动应用程序然后启用它,则不会调用onProviderEnabled().在这种情况下,应用程序无法识别GPS已启用,因此它可以开始侦听更新.

我认为我从查看示例中了解了LocationManager和LocationListener,但我似乎无法将其应用于我需要多个活动中的位置数据的情况.任何帮助或建议将不胜感激.

android locationlistener

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

嵌入导航栏时,iOS 7中的奇怪UISearchDisplayController视图偏移行为

我正在构建一个仅限iOS 7的应用程序.我正在尝试将UISearchDisplayController设置到导航栏中.

我设置如下:在故事板中,我在视图控制器的视图中添加了"搜索栏和搜索显示控制器",并将其设置为(0,0)相对于顶部布局指南.我设置约束来固定左,上,右.(我玩限制,我完全删除它们,没关系)最重要的是我有我的表视图.当我将搜索栏添加到故事板中的视图时,它会自动为searchDisplayController和searchBar委托设置插座.在代码我self.searchDisplayController.displaysSearchBarInNavigationBar = YES;有两个问题:

1)没有为搜索栏显示任何按钮(界面构建器 - >选择搜索栏 - >选项:未选中),搜索栏位于屏幕中间:

在此输入图像描述

如果我点击导航栏,它会开始编辑搜索栏:

在此输入图像描述

另请注意,暗覆盖图似乎偏离导航栏.在我看来,空间与导航栏的高度相同.就像它已经被那么多下降了.此外,当它显示搜索结果时,内容视图的顶部向下移动相同的量(更多图片跟随),这带来了第二个问题.

2)我搞砸了一会儿,决定检查选项,让它显示取消按钮.现在我已正确嵌入导航栏中的搜索栏,但叠加层仍然向下移动:

在此输入图像描述

同样,当搜索结果表视图出现时,它会向下移动相同的数量(请注意右侧的滚动条):

在此输入图像描述

更奇怪的是,我在搜索显示控制器的tableview图层上设置了一个边框,看起来是正确的:

在此输入图像描述

我之前从未使用过UISearchDisplayController而且我不熟悉如何设置它,但功能上它工作正常.我已经阅读了一些其他类似的帖子,但唯一的建议是通过调整帧和设置手动偏移来破解它.我更想知道造成这种情况的原因,这是一个错误吗?我做错了什么?如果这是一个错误,我可以等待修复.这似乎是一个基本的东西,千人一定没有任何问题,所以我觉得我不是以某种方式正确设置它.谢谢你的输入.

interface-builder uitableview uisearchdisplaycontroller ios7

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

如何在Google Play商店应用中设置Android SearchView风格?

我想风格SearchViewtoolbar看/作用相似SearchViewGoogle Play Store app.它似乎将搜索视图包装在一个cardview中,但它似乎也整合了按钮/抽屉切换行为.

这是searchView的主要活动,它集成了抽屉式切换器

MainActivity SearchView

当您单击它时,抽屉切换更改为箭头(单击时将从搜索视图中删除焦点)

在此输入图像描述

当您单击商店中的应用程序时,您将转到应用程序详细信息页面,并且您将搜索视图的图标化版本看作具有向上按钮的折叠操作项:

在此输入图像描述

最后,如果您点击搜索图标,它会扩展为一个动作项目(带有一种涟漪动画),并在屏幕上一直显示并包含向上按钮:

在此输入图像描述

当我自己尝试这样做时,我遇到了很多问题.我试图将searchview包装在cardview中并将其放在工具栏中.它的工作原理但左边总是有填充,我无法删除(我试过contentInsetStart,不起作用):

<android.support.v7.widget.Toolbar
    android:id="@+id/activityCatalogToolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:popupTheme="@style/AppTheme.PopupOverlay"
    android:theme="@style/AppTheme.AppBarOverlay"
    app:contentInsetStart="0dp"
    app:contentInsetLeft="0dp">

    <android.support.v7.widget.CardView
        android:id="@+id/activityCatalogSearchContainer"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_gravity="end"
        android:layout_marginTop="4dp"
        android:layout_marginBottom="4dp"
        android:layout_marginRight="8dp"
        android:layout_marginLeft="8dp"
        app:cardCornerRadius="4dp"
        app:cardElevation="8dp">

        <android.support.v7.widget.SearchView
            android:id="@+id/activityCatalogSearch"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:queryHint=""
            android:iconifiedByDefault="false"/>

    </android.support.v7.widget.CardView>

</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我还试图删除工具栏,只用FrameLayout替换它.这允许我控制填充但显然我丢失了工具栏功能(向上按钮等)并且还引入了主题问题(图标和文本消失).

有谁知道他们是怎么做的?我不想仅仅为框架中已存在的样式小部件添加另一个库.谢谢!

android themes android-appcompat google-play searchview

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

Android SSL错误:证书不受信任......有时候

在我正在处理的应用程序中,我必须与Web服务器建立HTTPS连接.我得到证书不可信任的错误,在咨询了stackoverflow之后,我发现了这篇博文:http: //blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/

似乎此服务器的CA未包含在Android的默认存储中.简而言之,我下载了所有证书,使用BKS提供程序创建了一个密钥库,导入了密钥,将密钥库导入到我的项目中,继承了DefaultHttpClient类以强制它使用我的密钥库.

按照博客中的步骤操作后,它在模拟器上完美运行.但是,当我在设备上测试时,它会间歇性地失败.我想我已经孤立了一个模式.似乎经过一段时间后我尝试建立HTTPS连接,它将失败.然后,如果我再次尝试相同的连接,它将成功.如果我等待一段时间然后再试一次,它会在第一次失败,成功重复尝试.我可以通过多次尝试失败来修复它,但我想知道发生了什么.行为表明某种缓存,但我不知道如何找到它或修改它的行为.有没有人对正在发生的事情有任何建议或知道我做错了什么?任何帮助,将不胜感激.

android ssl-certificate

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

iOS App - 如何使用AFNetworking 2实现自动会话cookie刷新

我正在开发一个iOS应用程序(使用AFNetworking 2,AFURLSessionManager),我必须与我无法控制的API进行交互(如果这有任何区别,则使用Symfony PHP框架).

问题是:用户有一个帐户.在应用程序首次启动时,用户将获得基于表单的登录屏幕.他们登录,然后获取会话cookie.Cookie会在30分钟后到期.它将在客户进行的每次通话中自行更新.但是,如果重新启动应用程序,cookie将被删除,如果应用程序闲置超过30分钟,则cookie将变为无效.

我在这里有很多困难.首先,我需要透明地进行登录调用,因此用户无需重新登录.所以我得到了错误响应并且我发出了登录请求,并且在成功时我重新创建了原始请求.现在的问题是,可能会发生多个同时发生的请求,并将其与移动网络连接的不可靠性联系起来.因此,这种逻辑发生的事情似乎是多次登录和重试以及大量额外代码和错误处理的噩梦.

到目前为止我的解决方案是:提出请求.如果我收到未经授权的错误响应,请将请求添加到重试队列(我自己管理),设置登录标志,并发出登录请求.首先进入的任何新请求都会检查登录标志,以查看是否正在进行登录.如果是这样,它们将直接进入重试队列.登录请求完成后,我将通过重试队列并进行所有排队请求.

到目前为止,这似乎工作得很好.但是,我有这种唠叨的感觉,有更好的方法.是否没有内置机制来处理这种情况?这似乎是处理用户身份验证的常用方法,但我找不到任何有关如何在AFNetworking中处理此问题的文档.它们涵盖了Basic和Digest身份验证,但没有关于基于表单的会话cookie身份验证.这是我第一次处理这个问题而且我无法相信没有其他人有这个完全相同的问题.有任何想法吗?

authentication cookies session ios afnetworking-2

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