例如,默认按钮在其状态和背景图像之间具有以下依赖关系:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/btn_default_normal_disable" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_default_pressed" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/btn_default_selected" />
<item android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_focused="true"
android:drawable="@drawable/btn_default_normal_disable_focused" />
<item
android:drawable="@drawable/btn_default_normal_disable" />
</selector>
Run Code Online (Sandbox Code Playgroud)
如何定义自己的自定义状态(类似于smth android:state_custom),那么我可以使用它来动态更改我的按钮视觉外观?
目前我有Android SDK 2.1(+工具修订版4).我想升级到Android SDK 2.2.当我尝试这样做时,我知道我需要首先将Android SDK工具升级到版本7.所以我同意,这个过程开始然后我收到一个错误:
- =警告!= - 无法重命名或移动文件夹.在Windows上,这通常意味着程序正在使用该文件夹(例如Windows资源管理器或您的防病毒软件.)请暂时停用您的防病毒软件.还请关闭所有可能正在访问目录'D:\ Install\Programming\android-sdk-working-dir\android-sdk_r04-windows\android-sdk-windows\too!s'的程序.准备好后,按YES再试一次.
下载Android SDK工具,修订版7安装Android SDK工具,修订版7
无法将目录D:\ Install\Programming\android-sdk-working-dir\android-sdk_r04-windows\android-sdk-windows\tools重命名为D:\ Install\Programming\android-sdk-working-dir\android- sdk_r04-WINDOWS\Android的SDK-WINDOWS\TEMP\ToolPackage.old01.
我知道http/https和防病毒问题.所以我取消了我的AV.我还关闭了任何可能保存文件夹句柄的应用程序.Eclipse也关闭了(我通过命令行启动管理器).但是我仍然得到同样的错误.
看起来唯一可以保存文件夹句柄的应用程序是管理器本身,因为它的起始目录是错误所抱怨的目录('\ tools').
我在Win XP Pro + SP3上.我以管理员身份运行.
有没有人有想法?
在Android 2.1/2.2上我使用DefaultHttpClientAndroid SDK中找到的.
Apache在他们的文档中说有两个超时:
CoreConnectionPNames.SO_TIMEOUT ='http.socket.timeout':定义套接字超时(SO_TIMEOUT),以毫秒为单位,即等待数据的超时,换句话说,两个连续数据包之间的最大周期不活动.超时值为零被解释为无限超时.此参数需要java.lang.Integer类型的值.如果未设置此参数,则读取操作不会超时(无限超时).
CoreConnectionPNames.CONNECTION_TIMEOUT ='http.connection.timeout':确定建立连接之前的超时(以毫秒为单位).超时值为零被解释为无限超时.此参数需要java.lang.Integer类型的值.如果未设置此参数,则连接操作不会超时(无限超时).
我尝试在Android源中搜索这两个超时的默认值,但无法找到.有谁知道这些超时的默认值是什么?我想获得一个链接到值设置的源或关于此的官方文档(而不仅仅是听取意见).
我们的应用程序现在有targetSdkVersion 26(Android 8),该应用程序使用FCM推送通知.
由于FCM文档规定我将FCM客户端库更新为版本11.2.0:
dependencies {
compile 'com.google.firebase:firebase-messaging:11.2.0'
}
Run Code Online (Sandbox Code Playgroud)
通过此FCM客户端库更新,FCM通知开始出现在Android设备上.很好,但是当应用程序处于后台时,它是处理FCM消息的系统,因此它使用名为"Miscellaneous"的默认Android通知通道,这不是我们想要的(我们在该列表中有其他通知通道和"其他"声音混乱) ).
正如FCM文档所述,有一种方法可以为FCM消息指定默认通知通道:
(可选)在应用程序组件中,元数据元素用于设置通知的默认图标,颜色和通知通道(Android O中的新增功能).只要传入的消息没有明确设置图标,颜色或notification_channel,Android就会使用这些值.
但是没有显示代码示例(样本仅显示图标和颜色).所以我只是通过在github上使用Firebase云消息传递快速入门中的一个示例来搜索:
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel"
android:value="@string/default_notification_channel_id"/>
Run Code Online (Sandbox Code Playgroud)
但它不起作用 - FCM通知仍然出现在"杂项"频道中.我在日志中看到:
W/FirebaseMessaging:AndroidManifest中缺少默认通知通道元数据.将使用默认值.
当然,我试图重新安装该应用程序.还有问题.
好吧,理想情况下,应该有一些方法在发送消息时在后端指定通知通道.允许测试发送的FCM开发控制台现在在UI中有这样的选项:
它工作正常.然而,我们的后端使用Java Amazon SNS API,我不知道该API是否允许在发送消息时指定Android通知通道(因为它是一个新的Android功能,亚马逊需要时间来采用它).因此,设置默认通知通道AndroidManifest.xml现在是一种有效的解决方法,但它不起作用.
android amazon-sns firebase-cloud-messaging notification-channel
我IllegalThreadStateException在使用以下代码时遇到异常:我已经启动了这个线程一次(通过使用thread.start())并再次尝试在另一个地方启动它,因此使用以下代码:
thread.interrupt();
thread.start();
Run Code Online (Sandbox Code Playgroud)
但是thread.start()扔了IllegalThreadStateException.
我应该用什么来解决它?
我正在尝试从我的库中构建一个@aar包,用作客户端项目中的依赖项.
在我的库模块中,我正在使用:
compileOptions{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Run Code Online (Sandbox Code Playgroud)
在达到客户端依赖关系之前,我想要解决代码并使Java 7兼容.这意味着我需要实际提供一个@aar包,其中Lambda函数和所有其他Java 8相关功能已经移植到Java 7字节码.
我面临的问题是在库模块上使用:
apply plugin: 'com.android.library'
Run Code Online (Sandbox Code Playgroud)
没有执行desugaring任务,这意味着字节码包含Java 8相关的导入,如:
java.lang.invoke.LambdaMetafactory
Run Code Online (Sandbox Code Playgroud)
这将迫使我的客户端将他的编译选项更新为JavaVersion.VERSION_1_8,这是我想要避免的事情.
所以作为最后一个问题:'com.android.library'插件执行的desugaring任务是仅在'com.android.application'插件中可用?如果是这种情况,请你帮我提一些关于如何将这一步也包含在库插件中的提示?
我们正在设计一个Android应用程序,其中包含几个以向导方式工作的活动 - 用户应该从活动#1转到活动#5以进入最终活动(#6).
由于我们知道操作系统可以在低内存中突然终止活动,因此我们使用Application类作为静态存储来保存用户输入的数据"向导"活动以及我们的应用程序在整个会话中需要的其他数据.
不幸的是我们发现这种方法失败了 - 看起来像Application类实例也可以被OS杀死(这是在Android 1.6和1.5上专门发现的).我们对这种方法的期望是否错误(我们认为Application类实例总是适用于整个应用程序会话)?
所以问题是 - 在整个应用程序会话的活动deathes/restarts之间保持数据的Android最佳实践是什么?
1)我们的Android应用程序将数据存储在内置的SQLite DB中.
我看到DB可以抛出android.database.sqlite.SQLiteFullException,但API中没有确切的信息是什么限制.
任何人都可以告诉数据库的大小限制是什么,以免进入SQLiteFullException?
我假设DB会将数据存储在设备的内部存储器中(与SDCard相比).我对吗?鉴于SQLite DB只是一个文件,可能数据库大小受限于免费的内部存储空间.再次 - 我是对的吗?如果是,那么Android上的内部存储大小是多少?怎么检测呢?它是基于设备型号还是操作系统版本而有所不同?
2)我们还需要保存应用设置.我认为SharedPreferences很适合.但问题是 - SharedPreferences也保存到内部存储吗?如果是,那么它是否与DB存储其文件的存储相同?
提前致谢!
我正在尝试在BB应用程序中实现应用程序内支付.
好的,我已经阅读了API/docs,现在我需要编写一个简单的测试.以下是API关于测试的内容:
要在不收取费用的情况下测试端到端购买流程,您可以将BlackBerry ID设置为测试帐户.通过测试帐户,您可以下载与BlackBerry App World供应商帐户关联的任何应用程序或数字商品,而无需支付任何费用.对于此类测试,必须关闭本地测试,否则将不会尝试网络连接.
从上面我看到我需要实现2个目标:
API对于如何做到这一点很模糊.我只能猜测点(1)可以通过他的AppWorld帐户在我的客户(我正在为其编写应用程序)方面完成.这是真的吗?关于第(2)点,我完全没有想法.有人能指出我正确的方向吗?
目前使用2.2 API我可以通过DevicePolicyManager.lockNow()锁定设备.
调用该方法后,我得到了一个标准的Android锁屏.我必须解锁设备才能看到我真正感兴趣的下一个场景 - PIN屏幕.
所以,我的问题是"是否可以直接调用PIN屏幕(无需先进入锁定屏幕)?".
我在这里遇到了一个奇怪的问题.基本上我有一个没有默认设置文本的TextView.我希望它的高度为0,因为它没有内容,但它上面和下面的元素之间似乎存在差距.如果我在XML中将高度设置为0,然后尝试通过Java代码更改它,那么它不会重置高度.
如果内容为空但如何允许以编程方式更改高度,如何将高度设置为0?
这是我的代码:
<TextView
android:gravity="center_horizontal|center_vertical"
android:id="@+id/connectionStatus"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:textSize="18px"
android:textStyle="bold">
</TextView>
Run Code Online (Sandbox Code Playgroud)
而Java代码是这样的:
private void getConnectionStatus()
{
if (hasConnection() == true)
{
//do something
}
else
{
connectionStatus.setHeight(48);
connectionStatus.setText("No Internet Access");
}
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
在循环内部或外部声明变量
请考虑这两个Java代码示例:
// 1st sample
for (Item item : items) {
Foo foo = item.getFoo();
int bar = item.getBar();
// do smth with foo and bar
}
// 2nd sample
Foo foo;
int bar;
for (Item item : items) {
foo = item.getFoo();
bar = item.getBar();
// do smth with foo and bar
}
Run Code Online (Sandbox Code Playgroud)
样品之间的性能/内存消耗是否有任何差异?如果是,那么它是否依赖于句柄的类型(对象与原语)?
android ×9
blackberry ×2
java ×2
aar ×1
amazon-sns ×1
architecture ×1
button ×1
height ×1
httpclient ×1
internal ×1
java-8 ×1
java-me ×1
limit ×1
loops ×1
payment ×1
performance ×1
screen ×1
sdk ×1
session ×1
size ×1
state ×1
storage ×1
testing ×1
timeout ×1
upgrade ×1
variables ×1
view ×1
visibility ×1
windows-xp ×1