㈠ android activity 按back键 执行什么过程
进程只是APP的一个容器而已,这个容器空了不代表这个容器没了,但是你把容器销毁了,容器里的东西一样会被销毁,按back键就是后退栈做pop操作的过程(回调onbackpressed,默认实现是调用finish(),finish()方法又会去调用OnDestroy),栈顶Activity就被销毁,所以会回调Activity的OnDestroy方法;而按home键是把整个任务栈挂起到后台,回到启动器首页,Activity并没有销毁。所以不会回调Activity的OnDestroy。
至于长按home键启动任务管理器结束应用,进程还是存在,这个因手机而异。有些手机是销毁这个应用(Application类的实例),进程这个容器还在,只是空了(空进程),发现进程不见了多数是因为系统回收空进程;有些手机是直接结束进程。
㈡ android,调用系统相机拍完照片并保存另一个activity 上,后退时,最初的activity却被系统销毁,怎么办
离开了只是暂时挂起activity,系统不会随便销毁activity的,除非你自己写了finish或者内存不足了
㈢ Android 应用中捕获返回事件,后退到的Acitivity 的内容自动经过刷新,应该如何实现
1、onCreate 方法只在activity一开始创建的时候执行。
2、也就是在该activity销毁后才能再次执行,假如当前activity上再打开一个activity,并且原来的activity已经销毁了,再返回原来的activity会重新执行onCreate
3、可以通过activity的生命周期的onStart方法或者是onResume方法对原来界面的数据进行刷新,也可以使用回调方法,或者是handler + Message
㈣ 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。
㈤ activity 后退回调哪些方法
管理你的Activity的生命周期
当用户在系统与你的应用之间切换的过程中,你的应用中的Activity实例也会在自己的不同生命周期中切换。例如,用户第一次打开你的应用,应用展现在用户的手机桌面,获取用户的输入焦点。在这个过程中,Android系统调用了你的Activity中的一系列的生命周期方法,这些方法建立了应用组建和用户之间的联系。如果用户启动了应用中的另外一个Activity,或者直接切换到另外一个应用,系统也调用了Activity生命周期中的一系列方法使应用可以在后台运行。,
在Activity生命周期的回调方法中你可以定义Activity在用户第一次进入和重新进入应用的行为。举例来说,当你做一个流媒体播放器,你可以在用户切换到另外一个应用的时候暂停视频并停止网络连接,当用户切换回来的时候,重新连接网络,并且从用户之前暂停的点继续播放。
理解生命周期中回调方法
在Activity生命周期之中,系统调用了App生命周期中的回调方法集,这些生命周期回调方法就像一个一级一级的金字塔。Activity生命周期的每一个阶段都对应金字塔的一个台阶。当系统创建了一个新的Activity实例,回调方法一级一级的从塔底向塔顶移动,当位于金字塔顶部的时候,这个Activity就位于用户前台,用户此时就可以与Activity互动了。
当用户要离开Activity的时候,系统调用另外一串方法,使Activity的状态从塔顶移动到塔底。在有些情况下,Activity只是完成部分的状态迁移并且等待用户的指令,并重新回到塔顶的状态。
根据Activity复杂度的不同,你或许不用实现所有的生命周期方法。可是,理解每个生命周期回调函数的意义从而确保你的应用按照用户的期望正确的动作则非常重要。正确的实现生命周期的回调方法,从而使应用正确的动作,主要有以下几点需要注意:
确保应用在用户使用你的时候可以接电话或者切换到其他应用而不崩溃。
确保你的应用在用户不使用的时候不消耗系统资源。
确保用户在从其他的应用切换回你的应用的时候能够继续之前的工作
在用户屏幕切换或者其他动作的时候不崩溃或者丢失用户数据
图一所显示的Activity不同状态之间的迁移的几种情形,可是在这些状态当中只有三种是稳定的状态,所谓稳定就是Activity可以在这个状态持续保持一段时间,者三个状态是:
Resumed:这个状态下,Activity来到用户前台,并且完成与用户的交互。(有些情况下我们也称这个状态为运行态。)
Paused:在这个状态下,Activity被另外一个在前台运行的半透明的Activity或者被另外一个Activity部分盖住,在这个状态下Activity不能接受用户的输入,也不能执行任何代码 。
Stopped:在这个状态下,Activity被全部盖住,对用户完全不可见,可以认为已经在后台了。在停止状态下,Activity的所有实例,以及他的所有状态信息都被保存,可是不能执行任何代码。
另外的状态(Created和Started)是一个过渡状态,系统将迅速通过呼叫生命周期的回调函数来迁移到其生命周期的下一站。系统在呼叫了onCreate()->onStart()->onResume()
指定你的应用的启动Activity
当用户启动你的应用程序的时候系统调用了那个你声明为启动Activity的onCreat()方法。这个Activity作为你的应用主进入点
㈥ android activity怎么全部退出
做过Android开发的人都知道,应用程序点击返回键 或者 代码显示调用了Activity.finish()方法都无法完全退出,通过任务管理工具可以看到他们还在进程中。
下面我将分享 OSChina.NET Android版客户端 完全退出程序的方法:
1. 添加权限
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
2. 导入AppManager工具类
AppManager类是一个自定义的工具类,作用是将应用程序所有启动的Activity都添加到堆栈,最终退出应用程序时全部释放掉Activity。
完整的AppManager类代码:
[java]
package net.oschina.app;
import java.util.Stack;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
/**
* 应用程序Activity管理类
* @author liux
*/
public class AppManager {
private static Stack<Activity> activityStack;
private static AppManager instance;
private AppManager(){}
/**
* 单一实例
*/
public static AppManager getAppManager(){
if(instance==null){
instance=new AppManager();
}
return instance;
}
/**
* 添加Activity到堆栈
*/
public void addActivity(Activity activity){
if(activityStack==null){
activityStack=new Stack<Activity>();
}
activityStack.add(activity);
}
/**
* 获取当前Activity(堆栈中最后一个压入的)
*/
public Activity currentActivity(){
Activity activity=activityStack.lastElement();
return activity;
}
/**
* 结束当前Activity(堆栈中最后一个压入的)
*/
public void finishActivity(){
Activity activity=activityStack.lastElement();
if(activity!=null){
activity.finish();
activity=null;
}
}
/**
* 结束指定的Activity
*/
public void finishActivity(Activity activity){
if(activity!=null){
activityStack.remove(activity);
activity.finish();
activity=null;
}
}
/**
* 结束指定类名的Activity
*/
public void finishActivity(Class<?> cls){
for (Activity activity : activityStack) {
if(activity.getClass().equals(cls) ){
finishActivity(activity);
}
}
}
/**
* 结束所有Activity
*/
public void finishAllActivity(){
for (int i = 0, size = activityStack.size(); i < size; i++){
if (null != activityStack.get(i)){
activityStack.get(i).finish();
}
}
activityStack.clear();
}
/**
* 退出应用程序
*/
public void AppExit(Context context) {
try {
finishAllActivity();
ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.restartPackage(context.getPackageName());
System.exit(0);
} catch (Exception e) { }
}
}
3. 使用AppManager工具类
Activity启动时,在的onCreate方法里面,将该Activity实例添加到AppManager的堆栈
AppManager.getAppManager().addActivity(this);
需要退出程序时,调用
AppManager.getAppManager().AppExit(this);
㈦ 如何在android中设置一个返回button点击后返回上一个activity
回上一个界面finish()方法本文地址:http://blog.csdn.net/caroline_wendyAndroid可... 当不是Activit...
㈧ Android按后退按钮时,先暂停视频播放,在退出到前一个页面
重写Activity。Android重新写Activity代码使点击回退按钮不会退出整个应用程序而是返回到上一个页面。