1. android中进程与任务栈是什么关系
任务管理器、高级进程管理器等等
2. Android中的activity的堆栈有什么作用
我的理解是堆栈就是后进先出,那么稍微想象一下,你打开的Activity是一层一层往上盖的,当你退出当前这个Activity的时候,使用堆栈机制才会显示你底下那一层的Activity,提高Activity复用率吧。如果你觉得这个Activity可以不用再保留那么也给你提供了相应的打开另一个Activity之后就清理掉自己的方法。这样做的用户体验会比较好吧;那么反过来讲如果没有采用堆栈机制,在这么有限的显示区域里应该怎么去分配多个Activity呢?
3. android怎样将activity放入全局栈
Activity是Android程序的表现层。程序的每一个显示屏幕就是一个Activity。正在运行的Activity处在栈的最顶端,它是运行状态的。
当有新的Activity进入屏幕最上端时,原来的Activity就会被压入第二层。如果他的屏幕没有被完 全遮盖,那么他处于Paused状态,如果他被遮盖那么处于Stop状态。
不管处于任何一层,都可能在系统觉得资源不足时被强行关闭,当然关闭时栈底的程序最先被关闭。
譬如:当你在程序中调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:他告诉 Activity Manager该Activity实例可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity 并重 新入栈,把原 Activity 压入到栈的第二层,从 Running 状态转到 Paused 状态。
在BlackBerry中,提供了一个管理Screen的栈,用来从任何地方来关闭位于最上一层的Screen,使用UiApplication.getUiApplication().getActiveScreen()来得到位于最上一层的Screen的实例,并且使用UiApplication.getUiApplication().popScreen()来关闭一个Screen或关闭当前最上一层的Screen,但是Android却未提供相应的功能,只能在一个Activity的对象里面调用finish来关闭自己,不能关闭其他的Activity。比如我们想实现一个功能从屏幕A—>屏幕B—>屏幕C—>屏幕D,然后在在转到屏幕D之前将屏幕B和C关闭,在屏幕B和屏幕C界面点击会退按钮都可以回退到上一个屏幕,但是在屏幕D上点击会退按钮让其回退到A,此外在一些循环跳转的界面上如果不在合适的地方将一些不需要的屏幕关闭,那么经过多次跳转后回导致内存溢出。对此我们可以设计一个全局的Activity栈,使用这个栈来管理Activity。管理Activity的类的定义如下:
import java.util.Stack;
import android.app.Activity;
public class ScreenManager {
private static Stack activityStack;
private static ScreenManager instance;
private ScreenManager(){
}
public static ScreenManager getScreenManager(){
if(instance==null){
4. android堆栈的问题 压栈退栈 求救啊!
这个应该不需要自己处理吧,安卓框架Activity栈自己就处理了吧。入栈是A --> C --> C1 --> B根据栈的特性,那出栈肯定就是 B C1 C A
5. android 怎么通知回退栈中的fragment刷新
到的问题:
通过FragmentTransaction的replace方法会导致,每次都会重新调用fragment的onCreateView()方法,浪费时间。
解决方法:
通过FragmentTransaction的hide和show方法来实现fragment的显示和隐藏,这样就不会重复调用onCreateView函数了。
FragmentTransactioin 可以用来添加,删除fragment,也可以控制fragment的显示和隐藏。
这是如果调用addToBackStack(null),此时的状态就会被保存在回退栈,按返回键的时候就会显示出栈顶的
getSupportFragmentManager().popBackStack() 这个方法可以让栈顶的fragment出栈。
只有在程序运行时被动态添加的fragment才会被添加到后退栈。
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, newFragment,"testa")
.addToBackStack(null)
.commit();
程序跑起来之后,通过这个方法后退栈数才会加一,如果在代码中一口气添加多个,再运行程序,getSupportFragmentManager().getBackStackEntryCount()得到的后退栈数值为零。
6. android任务栈是systemui吗
这个肯定是有的,在系统程序里,手机内存的system目录下的app文件夹中,只不过他是没有程序图标的
7. android 怎么返回栈顶的fragment
我在上一个app的做法是先创建所有的fragment的示例,当需要显示那个fragment就从集合总拿出来显示就可以了。
8. android中的任务栈,是一个任务栈包含前台任务栈和后台任务栈,还是任务栈分为前台的任务栈
任务栈分为前台的任务栈,当前activity活动所在的栈称为前台任务栈。
9. android 中怎样能够清除activity堆栈,也就是退出整个应用
如果退出整个程序,如下操作:方式一:Intent intent=new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_HOME);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);this.startActivity(intent);System.exit(0); 方式二:android.os.Process.killProcess(android.os.Process.myPid()); android 完全退出程序有几个activity,有一需求是在一个activityA点击back键退出系统而不是跳到之前的activity首先想到的是清空activityA的堆栈,使用intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 但是该activityA不是已经存在于堆栈底端的,所以清除的只是堆栈中该activityA上面的activity,但后退后还是会返回堆栈中该activityA下面的activity。