小编Blu*_*ell的帖子

Android用省略号替换"..."

自AVD工具16以来我收到此警告:

Replace "..." with ellipsis character (..., …) ?
Run Code Online (Sandbox Code Playgroud)

在我的strings.xml中

在这条线上

 <string name="searching">Searching...</string>
Run Code Online (Sandbox Code Playgroud)

我如何替换......它只是字面意思: ...

如果有人能解释这个编码吗?

xml encoding android adt

296
推荐指数
4
解决办法
9万
查看次数

将方法声明为静态有什么好处

我最近在Eclipse中查看了我的警告并遇到了这个问题:

静态警告

如果方法可以声明为static,它将给出编译器警告.

[edit] Eclipse帮助中的确切引用,对私有和最终的压力:

启用后,编译器将对privatefinal方法发出错误或警告,并且仅引用静态成员.

是的我知道我可以关掉它,但我想知道打开它的原因?

为什么将每个方法声明为静态是一件好事?

这会带来任何性能优势吗?(在移动领域)

指出一个方法为静态,我想是显示你不使用任何实例变量因此可以移动到utils样式类?

在一天结束时,我应该关闭它"忽略"或者我应该修复它给我的100多个警告吗?

你认为这只是污染代码的额外关键字,因为编译器无论如何只会内联这些方法吗?(有点像你没有声明每个变量你可以最终但你可以).

java optimization static coding-style

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

为什么post增量运算符不能处理返回int的方法?

public void increment(){
    int zero = 0;

    int oneA = zero++; // Compiles

    int oneB = 0++; // Doesn't compile

    int oneC = getInt()++; // Doesn't compile
}

private int getInt(){
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它们都是int的,B&C为什么不编译?是否与++运营商的不同之处有关= 0 + 1;

操作的参数无效++/ -

java post-increment

60
推荐指数
5
解决办法
4717
查看次数

Android性能 - '避免内部吸气/安装者'

只需在开发网站上阅读:

避免内部吸气/安装者

在像C++这样的本地语言中,通常的做法是使用getter(例如i = getCount())而不是直接访问字段(i = mCount).这是C++的一个很好的习惯,因为编译器通常可以内联访问,如果您需要限制或调试字段访问,您可以随时添加代码.

在Android上,这是一个坏主意.虚拟方法调用比实例字段查找要昂贵得多.遵循常见的面向对象编程实践并在公共接口中使用getter和setter是合理的,但在类中,您应该始终直接访问字段.

没有JIT,直接字段访问速度比调用一个简单的getter快约3倍.使用JIT(直接字段访问与访问本地一样便宜),直接字段访问比调用一个简单的getter快约7倍.在Froyo中也是如此,但是当JIT内联getter方法时,将来会有所改进.

所以它说你会在课堂上使用字段访问:

 public class MyObject {

    public Object innerObject; // This would be private if I was using a getter

    public void doSomeStuff(){
          if(innerObject){        // Within class access like this
                 // ....
          }
    }

    public Object getInnerObject(){  // This would be removed if I was using field access
         return innerObject;
    }
 }
Run Code Online (Sandbox Code Playgroud)

但是从另一个对象访问呢?

 public class SecondObject {

      public void doSecondSomething(){
                MyObject ob = new MyObject();
                Object inner;

                //This is my question …
Run Code Online (Sandbox Code Playgroud)

java optimization performance android

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

如何检索Intent请求的活动

说我有这样的意图:

 Intent intent = new Intent(context, MyActivity.class);
Run Code Online (Sandbox Code Playgroud)

然后我想要一个将为以下内容返回true的方法:

 boolean found = intent.getSomeMethodToRetrieveActivity() instanceof MyActivity;
Run Code Online (Sandbox Code Playgroud)

基本上有没有办法找出意图解决的活动?

有任何想法吗?

编辑

仔细阅读src我可以看到我可以得到这样的类名:

 intent.getComponent().getClassName()
Run Code Online (Sandbox Code Playgroud)

这将返回" com.my.package.MyActivity",这是关闭,但我想使用instanceof

android class instanceof android-intent

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

InApp计费安全和远程方法调用

我已经在应用程序中实现了应用程序计费,现在我想要更多地保护它.阅读开发者材料,它说:

除了运行模糊处理程序外,我们还建议您使用以下技术来混淆应用内的结算代码.

内联方法转换为其他方法.

动态构造字符串而不是将它们定义为常量.

使用Java反射来调用方法.

http://developer.android.com/guide/market/billing/billing_best_practices.html

混淆 - 很好我可以做那个= proguard

内联方法转换为其他方法 - 这就是说,一旦我的代码完成,尽可能地删除大量OO并将所有代码放在尽可能多的行中(对于我的应用程序的计费部分)在一个方法中?这包括内联类吗?在android示例中,他们有一个常量类,我会内联所有这些吗?

动态构造字符串 - 是的,所以将所有类常量变量排成一行 - 精细程序应该涵盖这一点

使用Java反射 - 这是我的主要问题.我应该调用我的所有方法而不是调用它们吗?

为了节省自己,我可以这样做:

private static Object invokeMethod(String name, Class<?>[] params, Object[] args){
    try {
        return MySpecificClass.class.getMethod(name, params).invoke(null, args);
    } catch (IllegalArgumentException e) {
        // Should never happen in my code, ignore and cancel in app charge
    } catch (SecurityException e) {
        // Should never happen in my code, ignore and cancel in app charge
    } catch (IllegalAccessException …
Run Code Online (Sandbox Code Playgroud)

java security android rmi in-app-purchase

15
推荐指数
1
解决办法
894
查看次数

Android Facebook SDK的keytool

我只想要一些确认.

我正在开发Windows

我正在尝试将facebook集成到应用程序中,SDK文档说我需要'导出签名'

从这里:http://developers.facebook.com/docs/guides/mobile/#android

所以它说运行这个命令:

 keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)

首先我必须下载openssl:OpenSSL

现在上面的命令,我假设应该转换为:

"C:\path\to\java\keytool" -exportcert -alias your_alias -keystore "C:\path\to\your\keystore\keystore.name" | "C:\path\to\openssl_install\bin\openssl" sha1 -binary |"C:\path\to\openssl_install\bin\openssl" base64
Run Code Online (Sandbox Code Playgroud)
  • 那么您想要安装在最新Java安装文件夹中的keytool吗?
  • 您希望别名是您在eclipse中用于正常apk创建的别名的名称吗?
  • 您希望密钥库是导出Android应用程序时使用的密钥库吗?
  • 您希望openssl成为您刚刚安装的那个

所以一旦我完成了它,它会要求输入密码:(它显示密码,因为我正在输入密码)

如果我输入正确的密码,我会得到

'zR2tey1h9kqPRSW/yEYEr0ruswyD ='(公开更改)

但是,如果我输入的密码不正确,它仍会返回一个代码形式的代码

'ga0RGNYHvTR5d3SVDEfpQQAPGJ1 ='?

所以,是的,只是在寻找确认我正在做正确的事情,这是预期的输出

java sdk android facebook keytool

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

无法在Android Pie的键盘视图中显示弹出窗口

我正在制作一个显示popupWindow语言的键盘。在所有设备上,我都可以popupWindow在键盘外完美显示,但在仅Android Pie中,不能popupWindow在键盘外显示。

candidateView连接蓝牙键盘时,我想在键盘之外显示弹出窗口。

我正在使用此代码

setClippingEnabled(false);
showAtLocation(anchor, Gravity.NO_GRAVITY, x, y);
Run Code Online (Sandbox Code Playgroud)

有人有什么想法吗,这是什么问题?

这是演示应用程序-https: //github.com/priyankagb/andoidpiepopupwindowdemo

看截图

在Android Pie中,您可以在底部看到一小行popupWindow用于语言

左边是馅饼下方,右边是馅饼

android popupwindow android-9.0-pie

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

Eclipse Visual Editor中的自定义Android视图

在我的应用程序中,我经常依赖自定义构建视图,例如在以下示例中.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 
android:background="@color/light_grey"
android:layout_height="match_parent" 
android:layout_width="fill_parent" >

<TextView 
 style="@style/CardTitle" 
 android:id="@+id/card_title"
 android:layout_height="wrap_content" 
 android:layout_width="fill_parent"      
 />  

<com.whiterabbit.cards.ui.AspectRatioImageView
    android:id="@+id/card_picture"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:layout_marginLeft="30dip"
    android:layout_marginRight="30dip"       
    android:src="@drawable/boss"
    />



<ListView 
    android:id="@+id/card_properties" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"

/>
Run Code Online (Sandbox Code Playgroud)

问题是,我不知道如果在真实设备或模拟器上运行它之前它是如何正确显示的.此外,如果我发现错误,我将不得不对其进行更改并再次部署应用程序以查看更改是否按预期工作.

这可能是一个漫长而枯燥的过程,特别是如果应用程序需要一些交互来访问您要检查的活动.

使用可视化编辑器不起作用,因为它无法加载自定义视图.

是否有另一种方法可以检查视图的显示方式而无需在整个应用程序中运行?

eclipse android adt visual-editor android-layout

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

如何交错(合并)两个Java 8 Streams?

 Stream<String> a = Stream.of("one", "three", "five");
 Stream<String> b = Stream.of("two", "four", "six");
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能使输出如下?

// one
// two
// three
// four
// five
// six
Run Code Online (Sandbox Code Playgroud)

我调查了concat但是正如javadoc解释的那样,它只是一个接一个地追加,它没有交错/散布.

Stream<String> out = Stream.concat(a, b);
out.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

创建一个延迟连接的流,其元素是第一个流的所有元素,后跟第二个流的所有元素.

错误地给出了

 // one
 // three
 // five
 // two
 // four
 // six
Run Code Online (Sandbox Code Playgroud)

可以这样做,如果我收集它们并迭代,但希望更多Java8-y,Streamy :-)

注意

我不想压缩流

"zip"操作将从每个集合中获取一个元素并将它们组合在一起.

拉链操作的结果将是这样的:(不需要的)

 // onetwo
 // threefour
 // fivesix
Run Code Online (Sandbox Code Playgroud)

java functional-programming java-8 java-stream

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