android退出activity
⑴ android activity怎麼全部退出
監聽手機返回鍵,按兩次退出棧,清空內存,代碼如下:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
ToastUtils.show(MainActivity.this,"再按一次退出程序");
exitTime = System.currentTimeMillis();
} else {
//清空activity任務棧
AppManager.getAppManager().finishAllActivity();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
⑵ Android Activity的關閉問題
你說的閃屏的activity是啟動的廣告頁?首先要保證你按返回就退出的app是在棧的底部,這樣在這個頁面調finish();就會直接完全的退出app,可以通過activity的啟動模式來控制,這個你查一下就會很清楚的,我這里簡單說一下:
1.在清單文件中,<Activity>標簽中加入android:launchMode = ""這個屬性,控制啟動模式,或者JAVA文件中也可以,不過不太一樣。
standard: 默認模式 可以實例化多次,每次都會創建一個新的實例
singleTop:可以實例化多次,但是棧頂只能出現一個
singleTask:只能創建一個Activity的實例
singleInstance:當啟動這種模式的Activity時,系統會分配一個新的任務task,並把Activity的實例放到棧的底部,他不允許其他的實例和它共享一個棧
2.在Activity中通過Intent對象來設置,優先順序高於xml文件中的設置:
FLAG_ACTIVITY_SINGLE_TOP 等同於 singleTop
FLAG_ACTIVITY_CLEAR_TOP 同singleTask 相似,當棧中存在要啟動的Activity實例,首先會把在它之上的實例移除,並且銷毀,然後銷毀當前的Activity實例,重寫創建新的實例
FLAG_ACTIVITY_NEW_TASK
必須在<Activity>添加屬性android:taskAffinity="com.other" 包名 android:alwaysRetainTaskState="true"只有設置了這兩個屬性,系統才會為當前實例創建新的任務,並放到棧的底部
⑶ android 如何關閉指定的Activity
1、可以用一個統一管理容器list,把所有啟動activity放到一起,關閉C的時候,也把B找出來關閉。
2、另一個方法是,可以關閉C的時候,把其他所有A和B都銷毀,然後再重新啟動一個A。
⑷ android 面試4: 如何退出Activity如何安全退出已調用多個Activity的Application
當然,也可以用killProcess()和System.exit()這樣的方法。 現提供幾個方法,供參考: 1、拋異常強制退出: 該方法通過拋異常,使程序Force Close。 驗證可以,但是,需要解決的問題是,如何使程序結束掉,而不彈出Force Close的窗口。 2、記錄打開的Activity: 每打開一個Activity,就記錄下來。在需要退出時,關閉每一個Activity即可。 3、發送特定廣播: 在需要結束應用時,發送一個特定的廣播,每個Activity收到廣播後,關閉即可。 4、遞歸退出 在打開新的Activity時使用startActivityForResult,然後自己加標志,在onActivityResult中處理,遞歸關閉。 除了第一個,都是想辦法把每一個Activity都結束掉,間接達到目的。 但是這樣做同樣不完美。 你會發現,如果自己的應用程序對每一個Activity都設置了nosensor,在兩個Activity結束的間隙,sensor可能有效了。 但至少,我們的目的達到了,而且沒有影響用戶使用。
⑸ 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。
⑹ android 關閉activity問題
可以用單例模式,在每一個activity中,將this放入單例中,最後關閉的時候一起關掉
工具類可以這么寫:
ublic class ActiveActUtil extends Application {
private List<Activity> activityList = new LinkedList<Activity>();
private static ActiveActUtil instance;
private ActiveActUtil() {
}
// 單例模式中獲取唯一的MyApplication實例
public static ActiveActUtil getInstance() {
if (null == instance) {
instance = new ActiveActUtil();
}
return instance;
}
// 添加Activity到容器中
public void addActivity(Activity activity) {
activityList.add(activity);
}
// 遍歷所有Activity並finish
public void exit() {
for (Activity activity : activityList) {
activity.finish();
}
instance = null;
}
}
然後在每一個activity的OnCreate里加入:ActiveActUtil.getInstance().addActivity(this);
⑺ 在android中怎樣退出activity
我們在項目開發的時候可能會遇到安全退出應用的場景,如何能夠安全退出多個Activity?網上有很多方法,下面這種方法就是我最喜歡的,簡單又易懂。如下:每打開一個Activity,就記錄下來,在需要退出時,關閉每一個Activity即可。使用單例模式創建一個Activity管理對象,該對象中有一個Activity容器。定義一個Application類來存儲Activity對象的引用。代碼如下: public class ExitAppliation extends Application { private List activityList = new LinkedList(); private static ExitAppliation instance; private ExitAppliation() { } // 單例模式中獲取唯一的MyApplication實例 public static ExitAppliation getInstance() { if (null == instance) { instance = new ExitAppliation(); } return instance; } //添加Activity到容器中 public void addActivity(Activity activity) { activityList.add(activity); } // 遍歷所有Activity並finish public void exit() { for (Activity activity : activityList) { activity.finish(); } System.exit(0); } }</activity></activity> 註:Application類是為了那些需要保存全局變數設計的基本類,你可以在AndroidManifest.xml的標簽中進行自己的實現,這樣的結果是:當你的application或者包被建立的時候將引起那個類被建立。就是說application是用來保存全局變數的,並且是在package創建的時候就跟著存在了。所以當我們需要創建全局變數的時候,不需 要再像j2se那樣需要創建public許可權的static變數,而直接在application中去實現。只需要調用Context的getApplicationContext或者Activity的getApplication方法來獲得一個application對象,再做出相應 的處理。 然後在每個Activity的onCreate()方法中添加下面代碼: ExitAppliation.getInstance().addActivity(this); 在需要結束所有Activity的時候調用exit方法: ExitAppliation.getInstance().exit();
⑻ 在android中能否用onstop()退出activity
可以,你在onstop里調用一下finish() 即可退出當前Activity
⑼ 請教android中怎麼關閉一個指定的activity
退出所有Activity,目前網上比較流行的方式大概有以下幾種: ① 使用ActivityManager的方式; ② 自定義一個Activity集合類的方式; ③ 通過發送廣播的方式; ④ 通過殺死當前應用進程的方式; Activity有四種啟動模式,分別為:standard(默認模式)、singleTop、singleTask、singleInstance。本方式需要使用的就是singleTask啟動模式。 如果設置一個Activity的啟動模式為singleTask,那麼每次啟動此Activity時系統都會檢查當前任務棧中是否已經存在此Activity的實例。如果已經存在,則不再創建此Activity新的實例,而是調用已存在的Activity的onNewIntent()方法,並把intent作為此方法的參數傳遞給它。然後它就會被置於棧頂,並把它之前的所有的Activity移除掉。
⑽ android 怎麼退出另外一個進程的activity
下面以ActivityB結束ActivityA為例
1、首先在ActivityA中定義一個靜態的全局變數
static Activity ActivityA;
2、在ActivityA中的onCreate方法中給ActivityA賦值
ActivityA = this;
3、在ActivityB中,需要結束ActivityA時調用
ActivityA a = new ActivityA();
a.ActivityA.finish();