Articles of android activity

屏幕旋转后不会调用onSaveInstanceState

我知道有很多关于在NavInstanceState上的问题,但是我无法find问题的答案。 我有一个扩展AppCompatActivity的活动; 此活动使用3个片段,它有一个variables’int currentStep’来跟踪正在显示的片段。 在onSavedInstanceState方法中,我将currentStepvariables存储在bundle中,然后在onCreate方法中将其恢复。 public class MainActivity extends AppCompatActivity { private final String CURRENT_STEP_TAG = “current_step”; private int currentStep; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pedido); if(savedInstanceState == null) { loadFirstFragment(); } else { currentStep = savedInstanceState.getInt(CURRENT_STEP_TAG); if(currentStep == 2){ //Do some stuff… } } } @Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) […]

如何检测我的任何活动是否最前面并且对用户可见?

我希望在我的任何活动可见时启动一个意图,否则我会将其作为通知提出,并由用户触发。 要做出决定,我需要知道我的任何活动是否最重要,我该怎么做?

防止活动堆栈被恢复?

当应用程序的进程被终止时,将保存其活动堆栈。 然后,当重新启动应用程序时,我的所有活动都会恢复并运行为空指针。 我宁愿让我的应用程序从基本活动开始,而不是尝试重新创建活动堆栈,而不是修改每个活动以适应此事件。 这可能吗? 我知道Intent.FLAG_ACTIVITY_CLEAR_TOP,但据我所知,只会在重新创建后杀死活动。 编辑:是clearTaskOnLaunch我想要什么? 我已将其添加到我的默认活动中,但看不到任何效果。 但即使我只是最小化应用程序,这也会扼杀我的活动,不是吗? 如果整个过程重启,我宁愿只清除堆栈。 编辑2:不,这不是我想要的 – 一位Android工程师对如何使用ClearTaskOnLaunch的一些问题作出了彻底的回应: http ://groups.google.com/group/android-developers/browse_thread/thread/da024bcaf4e1960f/ab1e2b35c360cb65 ?PLI = 1

Android:如何获取已安装活动的列表,因为它们出现在启动器中,没有重复项

我正在编写一个应用程序,允许用户查看已安装的应用程序列表,选择其中一个,然后按计划启动它。 使用stackoverflow中的教程,我设法弄清楚如何获取已安装活动的列表,它们的包名称和图标(即这里 – 几种方法)。 以防万一,这就是我开始活动的方式,它完美无瑕,没问题: Intent launchIntent = packageManager.getLaunchIntentForPackage(packageName); launchIntent.setAction(Intent.ACTION_MAIN); launchIntent.addCategory(Intent.CATEGORY_LAUNCHER); launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(launchIntent); 问题是检索已安装的应用程序列表。 我find了两种方法来获取已安装的应用程序列表: 1)使用 PackageManager pm = getPackageManager(); List apps = pm.getInstalledApplication(PackageManager.GET_META_DATA) 从apps每个元素,您可以获得它的包名和包标签(应用程序名称)。 2)使用 PackageManager pm = getPackageManager(); Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); List resolveInfos = packageManager.queryIntentActivities(mainIntent, 0); for(ResolveInfo info : resolveInfos) { ApplicationInfo applicationInfo = info.activityInfo.applicationInfo; //… //get package name, […]

ActivityManager:启动活动时抛出exceptionjava.lang.IllegalArgumentException:val.length> 91

启动应用程序的MainActivity时,它会立即崩溃。 当我查找adb日志时,我只能find这个, Exception thrown when launching activities in ProcessRecord java.lang.IllegalArgumentException: val.length > 91 at SystemProperties.set 当我查找android的源代码时,我发现这可能是Android Source Code of SystemProperties.java问题的根源。 它的最大值限制为91。 public static final int PROP_VALUE_MAX = 91; public static String get(String key) { if (key.length() > PROP_NAME_MAX) { throw new IllegalArgumentException(“key.length > ” + PROP_NAME_MAX); } return native_get(key); } 当我猜测时,我发现,我的应用程序包的名称长度为108个字符 。 当我将我的应用程序包名称更改为60个字符时 ,它没有任何问题。 可能是什么问题? […]

找不到包’learnapp.android.example.com.learnapp’中属性’srcCompat’的资源标识符

我收到Error:(26) No resource identifier found for attribute ‘srcCompat’ in package ‘learnapp.android.example.com.learnapp’当我尝试运行我的应用Error:(26) No resource identifier found for attribute ‘srcCompat’ in package ‘learnapp.android.example.com.learnapp’时, Error:(26) No resource identifier found for attribute ‘srcCompat’ in package ‘learnapp.android.example.com.learnapp’我刚刚开始学习安卓。我添加了一个新活动和dint更改任何xml文件中的任何内容。 这是确切的错误: Documents/MyProjects/LearnApp/app/src/main/res/layout/activity_display_message.xml Error:(26) No resource identifier found for attribute ‘srcCompat’ in package ‘learnapp.android.example.com.learnapp’ 这是我的activity_display_message.xml 我已经阅读过类似的问题,看到了这一行 xmlns:app=”http://schemas.android.com/apk/res-auto” 要么 app:srcCompat=”@android:drawable/ic_dialog_email” /> 在他们的情况下是错误的,这不是我的情况。 重要的是,此活动的父活动是MainActivity.java

在开始新活动后调用finish()

在我的应用程序中加载的第一个Activity是一个初始化活动,一旦完成,它就会加载一个新的Activity。 我想确保如果用户按下“返回”,他们会直接进入启动器,而不是初始化屏幕。 旁注,这是最好的方法,还是用某种Intent Flag做得更好? 在新活动上调用startActivity()之后调用finish()是否正确? onCreate() { … startActivity(new Intent(this, NextActivity.class)); finish(); … } 我仍然采用整个’Message Queue’方法在Android中做事,我的假设是从我的第一个Activity的onCreate()调用startActivity()然后finish ()将记录消息队列中的每个相应消息,但是在继续开始下一个Activity并完成我的第一个Activity之前完成onCreate()的执行。 这是正确的理解吗?

如何保留单个活动实例但能够更新视图?

在我的情况下,有一种情况我需要确保活动一次只运行一个。 我发现如果我设置活动的LauchMode ,我可以达到单实例目标,但它不会更新活动的视图。 此活动由startActivityForResult启动,我们将具有意图的URI发送到活动。 让我们讨论一下这个案例: gallery – lauch与imageA的活动。 相机 – 用imageB来完成这项活动。 我的请求不是销毁旧活动,但刚刚收到新意图信息的活动应刷新视图。 我find了一个新方法onNewIntent 。 此方法可以在恢复之前刷新意图。 我会尝试。

如何在Android中将活动设置为全屏模式?

如何为Android中的活动设置全屏模式? 我使用以下代码设置全屏但它会生成错误: 例外: android.util.AndroidRuntimeException: requestFeature() must be called before adding content. 码: getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE);

如何从活动中调用服务的方法?

我只想从我的活动中调用本地服务的方法。 我怎样才能做到这一点 ?