activity-避免多次打开Activity

问题描述

避免多次打开Activity
在程序中有一个common menu带有图标。点击一个图标会开启一个Activity。有什么方法可以知道如果一个activity已经运行,能防止它多次打开?

解决方案

Activity默认启动模式是standard
Activity 有四种加载模式
[1] standard 模式
这是默认模式,每次激活Activity时都会创建Activity实例,并放入任务栈中。
[2] singleTop 模式
如果在任务的栈顶正好存在该Activity的实例,就重用该实例( 会调用实例的 onNewIntent() ),否则就会创建新的实例并放入栈顶,即使栈中已经存在该Activity的实例,只要不在栈顶,都会创建新的实例。
[3] singleTask 模式
如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的 onNewIntent() )。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移出栈。如果栈中不存在该实例,将会创建新的实例放入栈中。
[4] singleInstance 模式
在一个新栈中创建该Activity的实例,并让多个应用共享该栈中的该Activity实例。一旦该模式的Activity实例已经存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例( 会调用实例的 onNewIntent() )。其效果相当于多个应用共享一个应用,不管谁激活该 Activity 都会进入同一个应用中。
设置启动模式的位置在 AndroidManifest.xml 文件中 Activity 元素的 android:launchMode 属性。

解决方案二:
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) startActivity(intent);

时间: 2024-09-17 15:14:27

activity-避免多次打开Activity的相关文章

activity-如何防止多次打开Activity?

问题描述 如何防止多次打开Activity? 在我的应用程序图标中有一个常见的菜单.点击一个图标将开始一个活动.如果一个活动正在运行,如何预防它被多次点击重新开始?还有我可以将一个活动的状态设置为onPause,总是让它在前台显示吗? 解决方案 使用 intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 开始执行Activity. 如果设置在一个Intent传递给Context.startActivity(),这个标志将导致发起的Acti

android intent是如何打开activity的

问题描述 android intent是如何打开activity的 android是如何通过intent打开activity的 具体原理是什么 怎么实现的 求大神解答 解决方案 这是很底层的东西了,原理还真不知道.不过Android使用任务栈保存activity的,启动的时候其实就是将一个activity实例化添加到栈,屏幕显示的就是栈顶的activity.找activity.class的话,和找其他类并没有区别啊,遍历dex文件呗-- 解决方案二: Android之Intent和Activit

textview-不加载一个activity,如何从这个activity中获取 TextView?

问题描述 不加载一个activity,如何从这个activity中获取 TextView? 在Activity A中有一个TextView.程序中使用Shared Preferences来把一个TextView 保存在Activity C中. 当加载 Activity A 或者 B时,不去Activity C如何从Activity C中获取TextView? Activity A 现在用下面的方法来获取 TextView Intent id = getIntent(); if (id.getCh

android-安卓中,在一个activity中获取另一个activity中的EditText的值

问题描述 安卓中,在一个activity中获取另一个activity中的EditText的值 在一个activity中获取另一个activity中的EditText的值,两个activity之间没有跳转,有什么方法能做到吗?各位前辈帮帮忙,谢谢. 解决方案 intent传值,Intent putExtra(String name float value) 解决方案二: 安卓中从一个Activity启动另一个Activity开启另一个Activity启动另一个Activity 解决方案三: 使用S

android-Android 一个Activity悬浮在另一个Activity上

问题描述 Android 一个Activity悬浮在另一个Activity上 解决方案 把activity设置主题,为对话框,就可以了,再设置宽 高. 解决方案二: 做过的给点思路或者给段代码 谢谢!!! 解决方案三: 你确定这是两个activity而不是两个layout? 解决方案四: android在一个activity关闭另一个activityAndroid Intent传递数据从一个Activity到另一个Activityandroid从一个activity跳到另一个activity 报

android-怎么在一个activity 中修改另 一个activity 的ui?

问题描述 怎么在一个activity 中修改另 一个activity 的ui? 如题,怎么在一个activity 中修改另 一个activity 的ui? 怎么在一个activity 中修改另 一个activity 的ui? 解决方案 http://www.cnblogs.com/ycxyyzw/p/3875544.html 解决方案二: 能详细点吗..... 解决方案三: 不知道你说的是不是这样 100为随意 唯一final int值 A中点击某个地方 Intent intent = new

java-把数据从一个 activity 发送到另一个 activity

问题描述 把数据从一个 activity 发送到另一个 activity 我想把一些字符串数据从 sub activity 发送到 main activity,然后在 edit text 字段中显示数据. sub activity : button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent in = new Intent(); in.setClass(getApplication

布局-在安卓开发中,如何在一个Activity中引用另一个Activity的XML文件?

问题描述 在安卓开发中,如何在一个Activity中引用另一个Activity的XML文件? 如题,我想在Activity1中通过点击Button来显示Activity2中的布局,要如何做到?求高手帮忙,谢谢大家 解决方案 在Android中常通过Intent进行Activity间的跳转.数据传递等,可在Button的onClick事件中通过Intent启动Activity2. 通过Intent进行Activity跳转,如下: Intent intent = new Intent(this, A

activity-在一个Activity中摧毁之前的Activity

问题描述 在一个Activity中摧毁之前的Activity 我有四个activity即ABC和D .A启动BB启动CC启动D .当C启动D时我想摧毁Activity B (逻辑上B仍然在Activity C中).因此当我从D返回时,它会跟随D->C->A这样的路径.那么我如何能从C中把B摧毁? 解决方案 finishActivity(requestCode); 这个方法会帮得上你.现在要做的就是从B中找一些request code来启动activity C,因此用request code来结