當前位置:首頁 » 安卓系統 » androidactivity退出

androidactivity退出

發布時間: 2024-09-30 19:06:57

㈠ 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退出為啥要按兩次返回鍵呢

這個是你的程序裡面AndroidMainfest.xml裡面A對應的Activity的配置的屬性決定的。你可能沒有配置A這個Activity的launchMode這個屬性,或者你配置的是默認屬性值standard。你修改這個屬性為singletop或者singletask試試。
網路一下launchMode,仔細看下你就明白了。

㈢ Android開發怎樣徹底退出APP我有兩個activity,在第一個activity中用system.exit(0)可以

你在第一個activity里用exit退出,只是結束了當前頁面而已,當你在第一個頁面exit因為只有一個頁面,所以可以,當有兩個以上頁面是,結束了第二個頁面就會跳到第一個頁面去,不能徹底退出。解決辦法:在配置文件里把最後你要退出的那個頁面的launchMode設置為singleTask,例如你上面說的第二個activity,你要退出的時候,直接在第二個activity里finish()就可以了。

㈣ android 從一個activity跳轉到另一個activity後在跳轉回來,為什麼就退出不了程序

activity是棧的方式存儲的,當你跳到第二個activity時,第一個被push到棧中,第二個activity中的back事件沒有處理的話,默認是pop第一個棧,也就是返回第一個activity。這個時候,你再back才是執行第一個activity中的你定義的back事件——退出。

㈤ Android 應用退出的幾種方法

android退出運用,主要有3種常用方案。

分別是:

  1. 殺進程,暴力退出app。

  2. 系統退出,強制性退出。

  3. activity管理(棧),合理性退出。

【主要原理】

主要是通過通知系統殺死運用,或者移除所有的界面資源達到退出運用的目的。

【詳細實現】

  1. 殺進程,暴力退出app。

    優缺點:暴力,但是容易丟失數據,可能會引起不必要的問題。

    代碼如下:

    android.os.Process.killProcess(android.os.Process.myPid());

  2. 系統退出,強制性退出。

    優缺點:相對第一種方法溫和點,謹慎使用。

    代碼如下:


    System.exit(0);


  3. activity管理(棧),合理性退出。

優缺點:推薦使用,一個個移除apk打開的所有資源,達到退出apk的目的。

代碼如下:


public class ScreenManager {

private static Stack<Activity> activityStack;

private static ScreenManager instance;

private ScreenManager(){

}

public static ScreenManager getScreenManager(){

if(instance==null){

instance=new ScreenManager();

}

return instance;

}

//退出棧頂Activity

public void popActivity(Activity activity){

if(activity!=null){

activity.finish();

activityStack.remove(activity);

activity=null;

}

}


//獲得當前棧頂Activity

public Activity currentActivity(){

Activity activity=activityStack.lastElement();

return activity;

}


//將當前Activity推入棧中

public void pushActivity(Activity activity){

if(activityStack==null){

activityStack=new Stack<Activity>();

}

activityStack.add(activity);

}

//退出棧中所有Activity

public void popAllActivityExceptOne(Class cls){

while(true){

Activity activity=currentActivity();

if(activity==null){

break;

}

if(activity.getClass().equals(cls) ){

break;

}

popActivity(activity);

}

}

}


【最後】

推薦使用第三種方案,方便管理退出。

㈥ 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是啟動的廣告頁?首先要保證你按返回就退出的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 怎麼退出整個應用程式

Android 怎麼退出整個應用程式

在Android中,Activity有個棧,一個Activity結信談束掉,會回到上一個Activity,並不是退出應用程式。
Android中,退出應用程式的方式:
通過pid
int pid = android.os.Process.myPid(); 獲取當前應用程式的PID
android.os.Process.killProcess(pid); 殺死當前程序
這種方法退出應用,是會保留某些後進程,例如:Service,Notifications等。
2.通過ActivityManager
ActivityManager manager = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE); 獲取應用程式管理器
manager.killBackgroundProcesses(getPackageName()); 強制結束當前應用程式
這種方式退出應用,會結束本應用程式的一切活動,因為本方法會根據應用程式的包名殺死所有程序包括Activity,Service,Notifications等。

呼叫System.exit(0);
其實還有一種方法也不錯,把MainActivity設定為singleTop,先跳轉到MainActivity然後finish就行,不過要注意停掉相應的Service

大家都知道 Android 的 Activity 是存著歷史棧的,比如從 A -> B -> C,C 完成 finish 後喊森回到 B,把所有的Activity 都 finish了,程式就自然退出了。 當然在 finish 的同時也需要是否自己程式的其他資源。所以需要想個辦法把 Activity 給存起來。然後在程式退出的地方呼叫它們的 finish()鄭坦畝方法。

使用全域性變數。對了,第一個想到的就是繼承 Application,程式碼入下。
public class AgentApplication extends Application { private List<Activity> activities = new ArrayList<Activity>(); public void addActivity(Activity activity) {activities.add(activity);} @Overridepublic void onTerminate() {super.onTerminate();for (Activity activity : activities) {activity.finish();}onDestroy();System.exit(0);}}
然後在 Activity onCreate 的時候來呼叫 addActivity (),有人可能想到這個Application需要在所有的 Activity onCreate的時候都使用,需要做一個單例例項。其實根本不需要。在 Activity 中使用 this.getApplication() 就可以了。

最後在你需要推出程式的地方呼叫 application.onTerminate() 就可以了。記住:super.onTerminate() 必須呼叫,程式碼中的 onDestroy()是我自己的釋放其他資源的方法,不是系統的。

執行以上程式碼後,在LogCat 中會出現一行提示:
Process 包名 (pid xxxxx) has died. 證明你的程式退出了。現在你可以測試了。

有幾種方法,一種是:程式退出時,下方有寫 在按一次退出程式
第二種,進 設定-應用程式-正在執行 這一欄自己關

有時跳轉的activity較多時,還需要多次按返回鍵,這樣感覺一點都不爽。 後面添加了一個選單返回功能鍵,這個方法也只能用system.exit(0)來關閉當前活動的Activity,附程式碼: public boolean onCreateOptionsMenu(Menu menu){super.onCreateOptionsMenu(menu); MenuItem item = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Exit"); item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener(){public boolean onMenuItemClick(MenuItem item){System.exit(0); return true;}});return true;}想到這樣太不方便了,每次退出介面之後應用程式還在執行,今天查了下資料終於把這個問題給解決了, 網上提供了幾種方法,我吸收了下面這個自認為簡單易懂的方法,將下面SysApplication這個類復制到工程裡面,然後在每個Acitivity的oncreate方法裡面通過SysApplication.getInstance().addActivity(this);添加當前Acitivity到ancivitylist裡面去,最後在想退出的時候呼叫SysApplication.getInstance().exit();可直接關閉所有的Acitivity並退出應用程式。 附程式碼:import java.util.LinkedList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.app.Application; import android.content.DialogInterface; import android.content.Intent; public class SysApplication extends Application { private List mList = new LinkedList(); private static SysApplication instance; private SysApplication() { } public synchronized static SysApplication getInstance() { if (null == instance) { instance = new SysApplication(); } return instance; } add Activity public void addActivity(Activity activity) { mList.add(activity); } public void exit() { try { for (Activity activity : mList) { if (activity != null) activity.finish(); } } catch (Exception e) { e.printStackTrace(); } finally { System.exit(0); } } public void onLowMemory() { super.onLowMemory(); System.gc(); } } 在應用程式裡面 的activity的oncreate裡面新增SysApplication.getInstance().addActivity(this)如:public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);

你可以長按主屏鍵後,在其中關閉應用程式。但並不能完全退出執行記憶體

熱點內容
ax86u如何導出配置 發布:2024-09-30 21:34:16 瀏覽:165
查加密空間 發布:2024-09-30 21:25:47 瀏覽:60
sqlserver運行存儲過程 發布:2024-09-30 21:05:32 瀏覽:207
見主機諾亞入口密碼多少 發布:2024-09-30 20:56:18 瀏覽:257
配置都夠了為什麼玩lol還卡 發布:2024-09-30 20:51:10 瀏覽:313
haskell函數式編程 發布:2024-09-30 20:50:35 瀏覽:597
sql月的最後一天 發布:2024-09-30 20:41:50 瀏覽:730
python列表生成器if 發布:2024-09-30 20:41:46 瀏覽:494
小米手機部落沖突賬號密碼是什麼 發布:2024-09-30 20:40:07 瀏覽:67
linux運維自動化腳本 發布:2024-09-30 20:36:59 瀏覽:597