Articles of android activity

是否应该对超类方法的调用是第一个语句?

可以在onActivityResult(int requestCode, int resultCode, Intent data)方法中读取语音识别的结果,如本例所示。 这个方法重写了类Activity的相同方法:为什么对超类方法的调用不是第一个语句? @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { // Fill the list view with the strings the recognizer thought it could have heard // … } super.onActivityResult(requestCode, resultCode, data); }

Android活动命名

我在Android活动和其他类之间遇到越来越多的命名冲突。 我想知道你是否可以告诉我你是如何避免这些的。 遗憾的是,我在SO的相关问题中没有涉及我的特定命名问题。 第一个例子 我有一个活动显示游戏的级别。 但是,该级别所需的数据(背景图片,实体等)存储在单独的类中。 当然,我会称之为后Level 。 但是,我也会调用活动Level ,因为它显示级别。 第二个例子 我有一个活动可以播放切割场景。 它基本上连续显示几个图像。 显示图像显示多长时间的信息存储在单独的类中。 与前一种情况一样,我自然会将这两个类称为CutScene 。 您如何解决这些命名问题? 将活动命名为LevelActivity和CutSceneActivity ? 将表示类LevelModel和CutSceneModel ? 别的什么?

将100个活动应用程序移植到碎片而不会死亡

我为银行开发了一个巨大的应用程序。 该应用程序使用户能够通过电话执行大量操作(国内和国际转移,证券,股票市场价值,警报,存款,卡更改,卡激活,支票等)。 所有应用程序都运行Android本机代码,每个屏幕都是一个Activity。 现在我们正在转向Fragments …我可以根据这些教程来实现这 一点 ……我甚至已经优化了它们的过程。 但是,根据他们的建议,我将不得不创建大约100个新的Fragment类; 切换我在每个屏幕活动上的代码并将其放在那些新的每个屏幕的Fragment类中; 更新大约100个布局; 最后更新屏幕触发新屏幕的方式(使用FragmentManager而不是Intents)。 也许并不困难,但繁琐乏味。 我的问题是,有人知道将100个活动应用程序移植到Fragments的快速方法比提到的教程更快吗? 谢谢

在应用更新时删除了活动别名

我已经实现了两个activity-alias ,用户应该能够在运行时启用或禁用它们。 我不希望在开始时启用它们,以免弄乱用户设备的应用程序屏幕。 但在运行时,用户应该能够启用别名。 我通过PackageManager执行此操作: PackageManager pm = getApplicationContext().getPackageManager(); ComponentName componentName = new ComponentName(context, “.ui.alias.open_location”); pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 这在开始时就像魅力一样,但是当安装了我的应用程序的更新时,别名会再次被禁用。 如何防止系统被清单覆盖启用状态? 我不希望用户在开始时使用Launcher,我不希望用户在更新后重新创建所有别名快捷方式。 我想我需要类似于PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER东西,但仅限于启用状态。 谢谢!

前台(顶部)活动(应用程序)更改时如何通知

我想为Android平台编写一个服务,当前台活动发生变化时会通知该服务。 基本上,只有在顶级活动发生变化时,服务才能执行某些任务。 有什么方法可以订阅并在发生此类事件时收到通知吗? 或者没有可能,服务应该不时轮询正在运行的活动列表并检查前台活动是什么?不是更好的解决方案……

为什么`android:screenOrientation =“背后”`在android 4.1.2中没有效果?

作为测试样本,应用程序有2个活动:MainActivity在按钮单击时启动SecondActivity。 它在Android 4.0.4上工作正常,但在Android 4.1.2上我遇到了意外行为。 系统设置中的AutoRotation已关闭(或打开 – 无关紧要,无论如何都会忽略“后面”选项)。 android:screenOrientation=”landscape”是为MainActivity设置的,而android:screenOrientation=”behind”是为SecondActivity设置的,这意味着SecondActivity也必须以横向方式启动。 适用于Android 4.0.4,但在Android 4.1.2上,SecondActivity以纵向方向开始。 AndroidManifest.xml中: SecondActivity.java: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); logOrientation(“onCreate”); } @Override protected void onDestroy() { super.onDestroy(); logOrientation(“onDestroy”); } @Override protected void onResume() { super.onResume(); logOrientation(“onResume”); } private void logOrientation(String prefix) { int requestedOrientation = this.getRequestedOrientation(); WindowManager lWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); Configuration cfg […]

Android中“FLAG_BLUR_BEHIND”的替代?

我可以看到,当我使用API​​演示中显示的相同标志来模糊背景时,我得到一个警告,它已被弃用: “不推荐使用WindowManager.LayoutParams.FLAG_BLUR_BEHIND字段”。 我已经读过它了,我发现“不再支持模糊”了。 这是否意味着它不适用于未来的版本? 他们为什么弃用它? 还有其他选择吗? 我真的很喜欢这个function。

活动方法:onCreate()和onDestroy()

当第一次创建活动时,系统调用OnContentChanged()方法作为第一个方法,系统的最后一次调用是一个活动被杀死时的OnDetachedFromWindow()方法,但是android文档说活动的整个生命周期发生在OnCreate()之间OnCreate()和OnDestroy() 。 为什么? 请帮助我理解这些方法之间的区别。 码: import android.app.Activity; import android.content.res.Configuration; import android.os.Bundle; import android.widget.Toast; public class ActivitylifecycleActivity extends Activity { /** Called when the activity is first created. */ @Override public void onContentChanged() { super.onContentChanged(); Toast.makeText(getApplicationContext(),”1. onContentChanged()”, Toast.LENGTH_SHORT).show(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Toast.makeText(getApplicationContext(),”2. onCreate()”, Toast.LENGTH_SHORT).show(); } @Override public void onStart() { […]

如何在Android中创建始终如一的全屏叠加活动

我希望能够创建一个始终位于Android显示屏前面的活动。 它应该不会收到任何输入,只需将其传递给下面的下一个应用程序。 像HUD一样的东西。 我能够研究我需要将底层窗口types设置为TYPE_SYSTEM_ALERT,但看起来Android忽略了我的代码 – 即使我从清单中删除了android.permission.SYSTEM_ALERT_WINDOW权限也没有抛出exception。 (需要使用此窗口types)。 当我尝试在对话框上使用ALERTtypes时,它工作正常,但我无法将对话框设置为全屏透明实体。 这是我的代码,也许有一些简单的遗漏。 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); getWindow().setBackgroundDrawableResource(android.R.color.transparent); getWindow().setFormat(PixelFormat.TRANSLUCENT); setContentView(R.layout.main); } 必须在xml清单中外部启用半透明设置,否则它也不起作用。 true

当直接从通知启动活动时,如何构建Android后备栈?

我有两个活动: 活动A – 项目清单 活动B – 项目的详细视图 通常,用户打开应用程序并启动活动A. 用户查看项目列表,单击一个项目,然后启动活动B以显示项目详细信息。 也可以通过单击通知直接启动活动B. 在这种情况下,没有后栈。 如何才能使活动B直接从通知启动时,用户可以单击“返回”按钮并转到活动A?