小编Ric*_*ier的帖子

设置值并在Android Spinner中显示文本

我需要帮助设置值并在微调器中显示文本.按照现在我通过数组适配器填充我的微调器,例如

mySpinner.setAdapter(myAdapter);
Run Code Online (Sandbox Code Playgroud)

据我所知,显示文本和旋转器在同一位置的值相同.我可以从微调器获得的另一个属性是项目上的位置.

现在在我的情况下,我想制作像我们在.NET中的下拉框一样的微调器.

它包含文本和值.

显示文本的位置,值位于后端.所以,如果我更改下拉框,我可以使用其选定的文本或值.但它没有发生在android spinner的情况下.

例如:

文本价值
Cat 10
Mountain 5
Stone 9
Fish 14
River 13
Loin 17

所以从上面的数组我只显示非生物对象文本,我想要的是,当用户选择它们时,我得到了值,就像当山选择我得到5

我希望这个例子让我的问题更加明确......

thankx

java android spinner drop-down-menu

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

消费者关闭输入通道或发生错误.事件= 0x8中

D/AndroidRuntime(11752): 
D/AndroidRuntime(11752): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
D/AndroidRuntime(11752): CheckJNI is ON
D/dalvikvm(11752): creating instr width table
E/jdwp    (11752): pipe failed
W/ProcessState(11752): Opening '/dev/binder' failed: Too many open files
D/AndroidRuntime(11752): Calling main entry com.android.commands.am.Am
I/Mamarduke_Diag( 1726): Data is available now.
I/Mamarduke_Diag( 1726): exec result -->>> java.lang.NullPointerException
I/DMIC    ( 1726):  ---> java.lang.NullPointerException
I/System.out( 1726): *****wifi state end=1
D/dalvikvm( 1726): GC_EXPLICIT freed 31K, 41% free 7507K/12551K, external 1625K/2137K, paused 58ms
D/dalvikvm( 1726): GC_EXPLICIT freed 0K, 41% free 7507K/12551K, external 1625K/2137K, paused 58ms
I/System.out( …
Run Code Online (Sandbox Code Playgroud)

android exception

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

git涂抹/清除分支之间的过滤器

有很多相关的问题涉及涂抹/清洁过滤器 - 我花了几个小时阅读它们,并尝试各种选项,但仍然失败.我希望我能以某种方式询问我得到的答案对我有用.

具体来说,我已经阅读了大部分这些答案链接回来的页面:


TL;博士

这是一个详细的问题,但摘要是:

  • 我可以将DEBUG = false文件存储在一个分支上,DEBUG = true在另一个分支中,使用涂抹/清除过滤器来管理该文件吗?如何?

背景

我在bitbucket有各种远程回购.我在Win8上使用SourceTree,将远程存储库克隆到我的笔记本电脑上.我为开发,功能,发布等创建了不同的分支(遵循一个成功的Git分支模型,无论好坏).

我有一个名为的Android java类Dbug.java,它包含一个布尔值,可以在我的代码中打开/关闭各种调试日志记录,模拟等功能.

public static final boolean DEBUG = false;
Run Code Online (Sandbox Code Playgroud)

我希望这个值false在我的"生产"(主)分支上,并且true在我的功能分支上.

  • 这可能是使用过滤器,还是我已经误解了用例?
  • 我不确定过滤器是否在同一本地托管的仓库的两个分支之间如此工作,或者过滤器仅在2个回购之间工作.

创建过滤器

在本地工作,我检查了生产分支.我创建了一个debug_flag.txt使用以下内容调用的测试文件:

// false on production branch
// true on other branches
DEBUG = false;
Run Code Online (Sandbox Code Playgroud)

我在我的本地仓库的根目录中创建了一个文件.gitattributes并添加了过滤器引用:

debug_flag.txt filter=debug_on_off
Run Code Online (Sandbox Code Playgroud)

.git/config用过滤器定义更新了文件:

[filter "debug_on_off"]
    clean = sed -e 's/DEBUG = true/DEBUG = false/'
    smudge = sed -s …
Run Code Online (Sandbox Code Playgroud)

git gitattributes

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

Android会杀死每个服务还是整个进程?

我们中的许多人都知道(在松散的情况下)Service如果没有调用,Android中的一个将被系统杀死Service.startForeground().但这是整个故事......?


我正在研究一些遗留代码,将"系统"权限应用程序移植到Play商店.startForeground()由于应用程序运行的"系统"权限,此应用程序有5个后台服务(不调用),这些服务到目前为止是安全的.它安装在自定义设备上.由于时间紧迫和预算紧张,将这5个重构为1不是短期解决方案,但我们希望尽快转向公测.

简短的问题是:

  • 如果没有前景,Activity或者ServiceAndroid是否会杀死每个单独的后台服务,还是只是杀死进程本身?

以下是有关进程和线程的Android文档中的一些信息,讨论了Android在压力下如何终止进程:

Android可能会决定在某个时刻关闭某个进程,此时内存不足并且需要更快立即为用户提供服务的其他进程.因此,在被杀死的进程中运行的应用程序组件将被销毁.当这些组件再次为它们工作时,将再次启动该过程.

在决定要杀死哪些进程时,Android系统会权衡它们对用户的相对重要性.例如,与托管可见活动的进程相比,它更容易关闭托管在屏幕上不再可见的活动的进程.因此,是否终止进程的决定取决于在该进程中运行的组件的状态....


常识称" Android会杀死服务 "

个人经验表明,Android也会杀死进程本身(如上面引用中所述).这可以通过在Application对象中存储对象来显示,并注意到在服务被终止后它们会被重新初始化.


考虑到上述因素,有一些解决问题的方法:

1)做正确的事

将5个服务重构为1,在各种不同的线程上运行.将1服务带到前台.问题解决了.

不幸的是,目前还没有这方面的预算,我们宁愿根据项目时间表找到快速解决方案.

这是将要实施的最终解决方案.

2)许多通知

在前台启动每个服务,每个服务都有自己的Notification图标.

这是一个混乱的解决方案,但将适用于beta现场试验,购买我们一段时间.

我认为这是"蛮力"的做法.

3)受一项服务保护的流程

如果它是被杀死的进程,而不是每个单独的服务,那么运行单个前台服务就足够了.

这将"防止"(即降低Android)杀死进程的可能性.

所有5项服务都将继续存在.

4)一项服务来统治它们

服务上文档告诉我们,如果服务绑定到另一个上下文,那么

stopService()或stopSelf()实际上不会停止服务,直到所有客户端解除绑定.

如果我从单个前台服务绑定到其他服务,那么它们会保持活着吗?


所以:

  • Android会杀死每个未绑定的后台服务吗?
  • 或者只是杀死运行应用程序的VM?

更新

经过18个 41小时的测试#3(受一个服务保护的进程),所有6个服务仍在运行(5个旧加1个新服务).

因此,如果没有前台活动或服务正在运行,那么看起来Android会杀死进程.

service android process

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

应用程序转到后台时Android自动注销

我想检测我的应用程序何时发送到后台.关于挂钩HOME键有很多问题 - 我知道这只有通过注册为启动器应用程序才有可能.

......但是......总是有一个客户想要某些行为......

我们有一个具有高安全性要求的应用.无论出于何种原因,客户希望应用程序在应用程序进入后台时退出服务器(电话,HOME键,最后一次活动)(**澄清我的意思是当屏幕上的前台活动不是我的应用程序之一**).

那么,如果我无法挂钩HOME键,还有其他选择吗?显然只是挂钩onPause()无济于事,因为那是Activity特定的.

我们提出的"最佳"是在Application类中保留一组Activity引用.在每个Activity中,onResume()我们将它添加到此数组中.在onPause()我们删除它.此外,onPause()我们通过此数组枚举,以查明是否有任何已注册的活动在前台.如果未找到前台活动,则用户将被注销.

我不满意这个解决方案,并希望找到更好的方法.

android

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

Android中的软件包管理器

我试图了解Android PackageManager(功能和用途)以及PackageManager以前版本的Ice Cream Sandwich的新改进.

我已经看到以下链接和一些旧线程,但仍然会感激,如果有人可以提供更多的参考或解释,因为在互联网上很少有.

PackageManager Android文档

维基百科 - 软件包管理器

编辑:

我想扩大我对PackageManagerandroid的理解.

  1. 它如何与APK一起使用(一组检查和安装,更新和删除后面的步骤).

  2. Android Play市场充当数据存储库.PackageManager下载和更新市场的互动.

  3. 使用时,第三方应用程序的安装过程与Pla​​y市场应用程序不同PackageManager吗?

Android开发者网站上提供的文档非常少PackageManager,因此非常感谢您的帮助.

谢谢 :)

android package-managers

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

svndumpfilter失败并显示"无效的复制源路径..."错误

我想将我的部分SVN repo移到异地,转到AWS实例并关注此页面(存储库维护)

我已经使用dump了整个仓库(Windows命令):

  • svnadmin dump c:\repo > all_repo

接下来是过滤它,只包括我感兴趣的项目(称为"M1").

  • type all_repo | svndumpfilter include M1 --drop-empty-revs > m1

我知道这是正确的,因为我已经在其他一些项目上做过了.


在这个项目中,它打破了这篇文章标题中指出的错误.确切的措辞是:

svndumpfilter:无效的复制源路径'/ Personal/Richard/M1_Config'

该过程试图写入不存在的管道.

错误引用的文件夹是我在个人文件夹下编写和提交的配置实用程序,它根本不在root/m1 ...文件夹下.我不想将它包含在过滤文件中,但不知道如何向svn命令指明这一点.

  1. 如何正确筛选整个M1文件夹及其子文件,同时完全排除Personal/Richard/M1_Config文件夹?
  2. 如何确定导出的文件是否包含正确重新创建远程SVN上的M1文件夹的正确信息?

svn svndumpfilter svnadmin

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

Android共享元素转换:英雄视图在其他人面前绘制

请查看此视频,其中显示了共享元素活动转换.这是从列表活动到详细活动的过渡.

[视频链接不再有效]

如您所见,imageview被绘制在选项卡前面.

我期望的是在imageview上以字体绘制标签并在整个过渡过程中淡出(这样在动画结束时它们就消失了).

似乎唯一有用的是设置windowSharedElementsUseOverlay为true,但这有其他丑陋的效果,所以这似乎不是一个选项.

最常建议的方法是在转换本身中包含选项卡,但问题是详细信息活动中没有选项卡,因此无法共享它们.


代码:我开始这样的详细活动:

options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, pairs);
ActivityCompat.startActivity(activity, subActivity, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

android shared-element-transition

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

在Android 4上打破了setColorFilter(),在Android 5上工作

我试图定期(每秒几次)在屏幕上闪烁不同的颜色.

要更改颜色,我Drawable.setColorFilter(int color, Mode mode)在主视图的背景上使用:

  • myView.getBackground().setColorFilter(Color.RED, PorterDuff.Mode.SRC);

出于调试目的,我添加了另一个我改变使用的视图 View.setBackgroundColor(int color).

问题是,setColorFilter()呼叫工作棒棒糖,但在以前的版本中碎(具体的Nexus 7 v4.4.4,Galaxy Nexus的V4.2.1).


我把颜色改变代码称为一个Runnable由a定期触发的代码Handler.

在所有平台上调用处理程序(我可以看到由于调试setBackgroundColor()调用而导致的后台更改).

以下是颜色循环代码:

Handler mHandler;
RunnableOnTick thisRunnable;
View vDebug;
View vBroken;

class RunnableOnTick implements Runnable
{
    int backgroundColor;

    @Override
    public void run()
    {
        color = random.nextInt(2);

        switch (color)
        {
            case 0:
            {
                backgroundColor = Color.RED;
                break;
            }
            case 1:
            {
                backgroundColor = Color.GREEN;
                break;
            }
        }

        // this works …
Run Code Online (Sandbox Code Playgroud)

android android-4.0-ice-cream-sandwich android-5.0-lollipop

12
推荐指数
2
解决办法
4418
查看次数

小工具minHeight ="72dp"给出2行高度

我正在创建一个除了显示一些静态信息之外什么都不做的基本小部件(这是我的教程演示练习).

我的widget提供程序XML看起来像:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialKeyguardLayout="@layout/widget"
    android:initialLayout="@layout/widget"
    android:minHeight="72dp"
    android:minWidth="294dp"
    android:updatePeriodMillis="60000" >

    <!-- NOTE 1: -->
    <!-- Widget sizing is done in terms of "blocks" on the screen. -->
    <!-- Each block is 74dp square. -->

    <!-- NOTE 2: -->
    <!-- OLD & WRONG FORMULA used to be: size = (n*74) - 2 -->

    <!-- NOTE 3: -->
    <!-- NEW FORMULA has been UPDATED: size = (n*70) - 30 -->
    <!-- Based on new formula, the size should be …
Run Code Online (Sandbox Code Playgroud)

android android-widget

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