如何检查Android apk是否已使用发布而不是调试证书进行签名?
我想做这样的事情:
List<Animal> animals = new ArrayList<Animal>();
for( Class c: list_of_all_classes_available_to_my_app() )
if (c is Animal)
animals.add( new c() );
Run Code Online (Sandbox Code Playgroud)
所以,我想查看我的应用程序的Universe中的所有类,当我找到一个来自Animal的类时,我想创建一个该类型的新对象并将其添加到列表中.这允许我添加功能而无需更新事物列表.我可以避免以下情况:
List<Animal> animals = new ArrayList<Animal>();
animals.add( new Dog() );
animals.add( new Cat() );
animals.add( new Donkey() );
...
Run Code Online (Sandbox Code Playgroud)
通过上面的方法,我可以简单地创建一个扩展Animal的新类,它将自动被拾取.
更新:2008年10月16日上午9:00太平洋标准时间:
这个问题引起了很多很好的回应 - 谢谢.从回答和我的研究中,我发现我真正想要做的就是在Java下不可能.有一些方法,比如ddimitrov的ServiceLoader机制可以工作 - 但它们对我想要的东西非常重,我相信我只是将问题从Java代码转移到外部配置文件.
另一种表达我想要的方式:我的Animal类中的静态函数查找并实例化从Animal继承的所有类 - 无需任何进一步的配置/编码.如果我必须配置,我也可以在Animal类中实例化它们.我理解,因为Java程序只是一个松散的.class文件联合体,就像它一样.
有趣的是,在C#中,这似乎相当微不足道.
在我看来,GOF中描述的Observer设计模式与Listeners在各种工具包中找到的实际上是相同的.概念之间是否存在差异,或者听众和观察者是否真的相同.
(我不是在寻找任何特定的计算机语言实现,我只是想从设计的角度来理解差异(如果有的话).是的,我知道有关SOF的类似问题有几个答案,但它们已根深蒂固关于特定语言的具体问题 - 我正在寻找设计答案,而不是语言答案.)
ImageView使用Glide 将URL下载到一个非常简单:
Glide
.with(context)
.load(getIntent().getData())
.placeholder(R.drawable.ic_loading)
.centerCrop()
.into(imageView);
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以下载到一个Bitmap?我想下载到原始位图,然后我可以使用其他工具进行操作.我已经完成了代码并且没有看到如何做到这一点.
我有两个pdf或postscript文件(我可以使用其中任何一个).我想要做的是将每个页面合并在另一个页面之上,以便将文档A的page1与文档B的页面1组合以产生输出文档的页面1.这不是我一定需要以编程方式进行的操作,尽管这会有所帮助.
有任何想法吗?
什么java.awt.Component.getName()用于?它总是出现null在我使用NetBeans构建的应用程序中.我想在每个组件中存储一些帮助文本 - 我不想使用工具提示,我有另一个面板,我将显示帮助文本.
是否有标准的X/Gnome程序将显示我选择的窗口的X,Y宽度和深度(以像素为单位)?类似于xterm在调整窗口大小时显示窗口宽度和深度(以行为单位)的方式.
我正在使用Red Hat Enterprise Linux 4.4.
谢谢!
我知道Unity3D StartCoroutine调用一个与StartCoroutine在同一个线程上运行的函数,但被调用的函数何时返回原始调用者?
在C中,我可以在函数中创建一个静态变量.该变量的空间不与函数变量一起分配,它是在程序启动时分配的.(不要太苛刻地模仿我的C,我已经用Java编程了太久:)
void myFunc(){
static SomeStruct someStruct;
someStruct.state=INITIALIZED;
goDoSomethingInteresting(MY_COMMAND,&someStruct);
}
Run Code Online (Sandbox Code Playgroud)
在Java中,如果我想做类似的事情,我创建一个类变量然后使用它.
Class TheClass {
SomeStruct someStruct = new SomeStruct();
void myFunc(){
someStruct.setState(INITIALIZED);
goDoSomethingInteresting(MY_COMMAND,someStruct);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是做这样的事情的最佳做法是什么?我真的想将我的变量someStruct与我的函数相关联myFunc,因为myFunc它是唯一应该知道或使用的代码someStruct,但除了将变量放在代码中接近函数之外,没有办法建立这种关联.如果你把它放在上面,那么函数的Javadoc看起来很不可思议,如果你把它放在下面,那么它们不是很清楚它们属于一起.
通常我只是someStruct在本地创建,但在我的情况下,创建它是非常昂贵的someStruct,我打电话给myFunc一个紧凑的循环.
我正在硬件设备上开发一个应用程序,该设备具有内置的硬件键盘,不会滑出,因此始终可见(如黑莓).因此,我从不希望软键盘显示在我的整个应用程序中.我知道另一个SO问题,提供以下代码行:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
但是我不知道在这个代码的哪个位置隐藏软键盘的地方可能会出现在我的Activity中.我试过添加代码Activity.onUserInteraction无济于事.看来键盘出现后的onUserInteraction执行.
我也尝试将以下内容添加到我的<Activity>:
<activity
android:windowSoftInputMode="stateAlwaysHidden"
>
Run Code Online (Sandbox Code Playgroud)
软键盘仍然出现.
在一个类中,我必须调用另一个需要两个参数a IHelloServiceConnectionObserver和a的类的构造函数ContextWrapper.问题是他们两个都是this.
注意:ContextWrapper是一个我无法控制的框架类(android.content.ContextWrapper实际上).我的班级(一个Android Activity)ContextWrapper已经是一个,而且我想混合一点IHelloServiceConnectionObserver.
还要注意,我的类是所有继承的几个类之一ContextWrapper,因此组合ContextWrapper并且IHelloServiceConnectionObserer不起作用.
我能做到这一点:
HelloServiceConnection svc = HelloServiceConnection(this,this);
Run Code Online (Sandbox Code Playgroud)
电话
public HelloServiceConnection(IHelloServiceConnectionObserver observer, ContextWrapper contextWrapper){
this.observer = observer;
this.contextWrapper = contextWrapper;
}
Run Code Online (Sandbox Code Playgroud)
但这看起来很傻.或者我可以这样做:
HelloServiceConnection svc = HelloServiceConnection(this);
Run Code Online (Sandbox Code Playgroud)
电话
public HelloServiceConnection(IHelloServiceConnectionObserver observer){
this.observer = observer;
this.contextWrapper = (ContextWrapper) observer;
}
Run Code Online (Sandbox Code Playgroud)
但现在我将一个很好的编译时错误移动到运行时错误.
这里的最佳做法是什么?
编辑:嗯,我不能说这是一个"最佳实践",但对于我的特殊情况,Jon Skeet有正确的答案.这是代码最终看起来像:
helloServiceConnection = HelloServiceConnection.create(this);
Run Code Online (Sandbox Code Playgroud)
电话
public static <T extends ContextWrapper & IHelloServiceConnectionObserver> HelloServiceConnection create(T value){
return new …Run Code Online (Sandbox Code Playgroud) java ×4
android ×3
apk ×1
awt ×1
c# ×1
gnome ×1
inheritance ×1
linux ×1
listener ×1
pdf ×1
postscript ×1
reflection ×1
x11 ×1