Questions tagged «android»

Android是Google的移动操作系统,用于对数字设备(智能手机,平板电脑,汽车,电视,Wear,Glass和IoT)进行编程或开发。对于与Android相关的主题,请使用特定于Android的标签,例如android-intent,android-activity,android-adapter等。对于与开发或编程无关但与Android框架相关的问题,请使用以下链接:https:// android.stackexchange.com。

20
在Android平台中推送通知
我正在寻找一个可以接收来自服务器的推送警报的应用程序。我发现了几种方法可以做到这一点。 SMS-拦截传入的SMS并从服务器启动拉取 定期轮询服务器 每个都有其自身的局限性。SMS-无法保证到达时间。轮询可能会耗尽电池。 请问您有更好的建议吗?非常感谢。
266 android  push  alerts 

9
活动,AppCompatActivity,FragmentActivity和ActionBarActivity:何时使用哪个?
我来自iOS,它很容易,您只需使用UIViewController。但是,在Android中,事情似乎要复杂得多,对于特定的API级别,使用某些UIComponent。我正在阅读适用于Android的BigNerdRanch(这本书大约有2年历史了),他们建议我使用Activity来托管我的FragmentActivities。但是,我以为Activity已弃用。 因此,对于API级别22(对API级别15或16的最低支持),我到底应该使用什么来托管组件以及组件本身?所有这些都有用途吗,还是我应该只使用一两个?

8
/ res和/ assets目录之间的区别
我知道res可以从目录访问文件,R.class而资产的行为就像文件系统一样,但是我想知道,通常情况下,何时最好使用一个文件。 谁能帮助我了解资源和资产之间的真正差异?

1
如何影响Android / ARM目标的Delphi XEx代码生成?
更新2017-05-17。我不再为产生此问题的公司工作,也无法访问Delphi XEx。在我在那里的时候,通过迁移到混合FPC + GCC(Pascal + C)来解决问题,对于某些例程,NEON内在函数有所作为。(强烈建议使用FPC + GCC,因为它可以使用标准工具,尤其是Valgrind。)如果有人可以通过可靠的示例演示他们实际上如何从Delphi XEx生成优化的ARM代码,我很乐意接受答案。 Embarcadero的Delphi编译器使用LLVM后端为Android设备生成本机ARM代码。我有大量Pascal代码,需要将这些代码编译到Android应用程序中,并且我想知道如何使Delphi生成更有效的代码。现在,我什至没有在谈论诸如自动SIMD优化之类的高级功能,而只是在生成合理的代码。当然必须有一种方法可以将参数传递给LLVM端,否则会影响结果?通常,任何编译器都会有很多选择来影响代码的编译和优化,但是Delphi的ARM目标似乎仅仅是“优化开/关”,仅此而已。 LLVM应该能够生成合理的紧致和明智的代码,但是Delphi似乎在以奇怪的方式使用其功能。Delphi希望非常大量地使用堆栈,并且通常只将处理器的寄存器r0-r3用作临时变量。也许最疯狂的是,它似乎正在将正常的32位整数作为四个1字节的加载操作进行加载。如何使Delphi产生更好的ARM代码,而又没有它为Android带来的逐字节麻烦呢? 起初,我认为逐字节加载是为了交换big-endian的字节顺序,但事实并非如此,它实际上只是加载具有4个单字节加载的32位数字。*可能是加载完整的32位,而不会产生未对齐的字大小的存储器负载。(是否应该避免那是另一回事,这暗示整个事情都是编译器错误)* 让我们看一下这个简单的函数: function ReadInteger(APInteger : PInteger) : Integer; begin Result := APInteger^; end; 即使启用了优化,带有更新包1的Delphi XE7以及XE6也会为该功能生成以下ARM汇编代码: Disassembly of section .text._ZN16Uarmcodetestform11ReadIntegerEPi: 00000000 <_ZN16Uarmcodetestform11ReadIntegerEPi>: 0: b580 push {r7, lr} 2: 466f mov r7, sp 4: b083 sub sp, #12 6: 9002 str …

10
以编程方式在LinearLayout中设置边距
我正在尝试使用Java(而不是XML)来创建一个LinearLayout,并带有一个充满屏幕且具有边距的按钮。这是不带边距的代码: LinearLayout buttonsView = new LinearLayout(this); buttonsView.setOrientation(LinearLayout.VERTICAL); for (int r = 0; r < 6; ++r) { Button btn = new Button(this); btn.setText("A"); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); // Verbose! lp.weight = 1.0f; // This is critical. Doesn't work without it. buttonsView.addView(btn, lp); } ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, …
266 java  android  layout  view  margin 

3
android:fontFamily的有效值及其对应的值是什么?
在此问题的答案中,用户列出了android:fontFamily和的12个变量的值(请参见下文)。这些价值从何而来?的文档android:fontFamily未在任何地方列出此信息(我在此处和此处进行了检查)。字符串在Android styles.xml文件的不同位置列出,但是这些字符串如何映射回Roboto字体? 从android 4.1 / 4.2开始,可以使用以下Roboto字体系列: android:fontFamily="sans-serif" // roboto regular android:fontFamily="sans-serif-light" // roboto light android:fontFamily="sans-serif-condensed" // roboto condensed android:fontFamily="sans-serif-thin" // roboto thin (android 4.2) android:fontFamily="sans-serif-medium" // roboto medium (android 5.0) 与此结合 android:textStyle="normal|bold|italic" 12种变体是可能的: 定期 斜体 胆大 加粗斜体 光 斜体 瘦 细斜体 浓缩常规 斜体字 浓缩粗体 粗体斜体 在styles.xml应用程序的文件中,我正在与某人合作,将其列为字体系列,我很确定这是错误的: <item name="android:fontFamily">Roboto-Regular.ttf</item> 我想正确设置我们应用程序的主题(包括正确使用fontFamily),并删除在查看文件之前创建的某些样式中的所有冗余。
266 android  fonts  styles 

15
手机上Google Play商店应用中的“为此应用评分”链接
我想在Android应用程序中添加“为此应用程序评分”链接,以在用户手机上的Google Play商店应用程序中打开该应用程序列表。 要在手机上的Google Play商店应用中打开打开market://或http://-link,我需要编写什么代码? 您将代码放在哪里? 有人对此有示例实现吗? 您是否必须指定将放置market://或http://链接的屏幕,并且最好使用- market://或http://?

10
我找不到Android键盘工具
我试图遵循Android映射教程,并进入这一部分,我必须获得一个API密钥。 我找到了我的目录,但是目录中debug.keystore似乎没有keytool应用程序: C:\Documents and Settings\tward\\.android>ls adb_usb.ini avd debug.keystore repositories.cfg androidtool.cfg ddms.cfg default.keyset keytool此目录中也没有: C:\Android\android-sdk-windows\tools>ls AdbWinApi.dll apkbuilder.bat etc1tool.exe mksdcard.exe AdbWinUsbApi.dll ddms.bat fastboot.exe source.properties Jet dmtracedump.exe hierarchyviewer.bat sqlite3.exe NOTICE.txt draw9patch.bat hprof-conv.exe traceview.bat adb.exe emulator.exe layoutopt.bat zipalign.exe android.bat emulator_NOTICE.txt lib 我使用Eclipse作为编辑器,并相信我已经下载了所有最新的SDK。 我究竟做错了什么?


7
何时调用活动上下文或应用程序上下文?
关于这两个上下文的内容有很多报道。.但是我仍然不太正确。 到目前为止,据我了解:每个类都是其类的一个实例,这意味着某些程序员建议您this.getApplicationContext()尽可能频繁地使用它,以免“泄漏”出任何内存。这是因为另一个this(获取Activity实例上下文)指向的Activity是每次用户倾斜手机或离开应用程序等时都将销毁的一个。显然,垃圾收集器(GC)无法捕获,因此使用了过多的内存.. 但是任何人都可以拿出一些非常好的编码示例,使用它们将是正确的事情this(获取当前Activity实例的上下文),而应用程序上下文将是无用/错误的?

21
Android-使用自定义字体
我将自定义字体应用于TextView,但似乎并未更改字体。 这是我的代码: Typeface myTypeface = Typeface.createFromAsset(getAssets(), "fonts/myFont.ttf"); TextView myTextView = (TextView)findViewById(R.id.myTextView); myTextView.setTypeface(myTypeface); 谁能让我摆脱这个问题?


12
文字变更监听器上的android
我有一个情况,有两个领域。field1和field2。field2当field1更改时,我只想做空,反之亦然。因此,最后只有一个字段具有内容。 field1 = (EditText)findViewById(R.id.field1); field2 = (EditText)findViewById(R.id.field2); field1.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) {} public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int count) { field2.setText(""); } }); field2.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) {} public …

12
AsyncTask在概念上确实存在缺陷吗?还是我只是想念一些东西?
我已经研究了这个问题好几个月了,并提出了不同的解决方案,我不满意,因为它们都是大型黑客。我仍然不敢相信,一个存在设计缺陷的类将其纳入了框架,并且没有人在谈论它,所以我想我肯定一定会丢失一些东西。 问题出在哪里AsyncTask。根据文档吧 “允许执行后台操作并在UI线程上发布结果,而无需操纵线程和/或处理程序。” 然后,该示例继续说明如何showDialog()在中调用某些示例性方法onPostExecute()。但是,这似乎完全是我想做的,因为显示对话框始终需要引用有效对象Context,而AsyncTask 绝不能持有对上下文对象的强引用。 原因很明显:如果活动被破坏而触发了任务,该怎么办?这可能一直发生,例如因为您翻转了屏幕。如果该任务将保留对创建它的上下文的引用,则您不仅会保留一个无用的上下文对象(该窗口将被破坏,并且任何 UI交互都会失败,并带有异常!),您甚至可能会冒险创建一个内存泄漏。 除非我的逻辑在这里有缺陷,否则这将转化为:onPostExecute()完全没有用,因为如果您无权访问任何上下文,在UI线程上运行此方法有什么好处?您在这里不能做任何有意义的事情。 一种解决方法是不将上下文实例传递给AsyncTask,而是传递一个Handler实例。这行得通:由于Handler松散地绑定了上下文和任务,因此您可以在它们之间交换消息而不会冒泄漏的风险(对吗?)。但这意味着AsyncTask的前提是错误的,即您不必费心处理程序。由于您是在同一个线程上发送和接收消息,因此这似乎在滥用Handler(您在UI线程上创建消息,并在同样在UI线程上执行的onPostExecute()中通过它发送消息)。 最重要的是,即使有了这种解决方法,您仍然面临这样的问题:当上下文被销毁时,您没有记录它触发的任务。这意味着在重新创建上下文时(例如,在屏幕方向更改后),您必须重新启动所有任务。这是缓慢且浪费的。 我对此的解决方案(在Droid-Fu库中实现)是WeakReference在唯一的应用程序对象上维护s从组件名称到其当前实例的映射。每当AsyncTask启动时,它都会在该映射中记录调用上下文,并且在每个回调中,它将从该映射中获取当前上下文实例。这样可以确保您永远不会引用过时的上下文实例,并且始终可以访问回调中的有效上下文,从而可以在其中进行有意义的UI工作。它也不会泄漏,因为引用很弱,并且在不再存在给定组件的实例时将其清除。 尽管如此,这是一个复杂的解决方法,并且需要对某些Droid-Fu库类进行子类化,这使其成为一种非常侵入性的方法。 现在我只想知道:我只是大量丢失了东西还是AsyncTask确实完全有缺陷?您的经验如何处理?您是如何解决这些问题的? 感谢您的输入。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.