android關閉activity
A. 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"只有設置了這兩個屬性,系統才會為當前實例創建新的任務,並放到棧的底部
B. android中怎麼銷毀當前的activity
執行finish()方法
android的生命周期包括onCreate,onStart,onResume,onPause,onStop,onDestroy
當調用finish方法後會執行onPause,onStop,onDestroy
C. 請教android中怎麼關閉一個指定的activity
退出所有Activity,目前網上比較流行的方式大概有以下幾種: ① 使用ActivityManager的方式; ② 自定義一個Activity集合類的方式; ③ 通過發送廣播的方式; ④ 通過殺死當前應用進程的方式; Activity有四種啟動模式,分別為:standard(默認模式)、singleTop、singleTask、singleInstance。本方式需要使用的就是singleTask啟動模式。 如果設置一個Activity的啟動模式為singleTask,那麼每次啟動此Activity時系統都會檢查當前任務棧中是否已經存在此Activity的實例。如果已經存在,則不再創建此Activity新的實例,而是調用已存在的Activity的onNewIntent()方法,並把intent作為此方法的參數傳遞給它。然後它就會被置於棧頂,並把它之前的所有的Activity移除掉。
D. android 如何關閉指定的Activity
1、可以用一個統一管理容器list,把所有啟動activity放到一起,關閉C的時候,也把B找出來關閉。
2、另一個方法是,可以關閉C的時候,把其他所有A和B都銷毀,然後再重新啟動一個A。
E. android中怎麼kill掉一個activity
直接調用activity的finish()方法即可關掉當前這個activity.
在Android中,Activity有個棧,一個Activity結束掉,會回到上一個Activity,並不是退出應用程序。
Android中,退出應用程序的方式:
1.通過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等。
F. 在Android 中如何關閉應用以及所有的 Activity
Android程序有很多Activity,比如說主窗口A,調用了子窗口B,如果在B中直接finish(), 接下里顯示的是A。在B中如何關閉整個Android應用程序呢?本人總結了幾種比較簡單的實現方法。
1. Dalvik VM的本地方法
android.os.Process.killProcess(android.os.Process.myPid()) //獲取PID
System.exit(0); //常規java、c#的標准退出法,返回值為0代表正常退出
2. 任務管理器方法
首先要說明該方法運行在Android 1.5 API Level為3以上才可以,同時需要許可權
ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
系統會將,該包下的 ,所有進程,服務,全部殺掉,就可以殺干凈了,要注意加上
<uses-permission android:name=\"android.permission.RESTART_PACKAGES\"></uses-permission>
3. 根據Activity的聲明周期
3. 我們知道Android的窗口類提供了歷史棧,我們可以通過stack的原理來巧妙的實現,這里我們在A窗口打開B窗口時在Intent中直接加入標志 Intent.FLAG_ACTIVITY_CLEAR_TOP,這樣開啟B時將會清除該進程空間的所有Activity。
在A窗口中使用下面的代碼調用B窗口
Intent intent = new Intent();
intent.setClass(Android123.this, CWJ.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG設置
startActivity(intent);
接下來在B窗口中需要退出時直接使用finish方法即可全部退出。
4.自定義一個Actiivty 棧,道理同上,不過利用一個單例模式的Activity棧來管理所有Activity。
不過建議使用第一種方式來退出應用程序