編輯:關於Android編程
我們在做app的時候總是會有一個注銷的功能就是退出整個應用程序,那麼怎麼才能做到退出整個應用程序呢,一個思路上用一個List集合來管理這些Activity,另一個思路就是在我們需要退出的時候給每一個Activity發送一個廣播,finish掉頁面。
今天就來說一下第一種實現方式:借鑒郭神的思路
解決思路很簡單,只需要用一個專門的集合類對所有的活動進行管理就可以了,下面我們就來實現以下。
新建一個ActivityCollector類作為活動管理器,代碼如下所示
public class ActivityCollector {
private static final String TAG = "ActivityCollector";
public static List activities=new ArrayList<>();
//添加Activity
public static void addActivity(Activity activity)
{
activities.add(activity);
Log.i(TAG, "addActivity: SIZE-->"+activities.size());
}
//移除某個Activity
public static void removeActivity(Activity activity)
{
activities.remove(activity);
Log.i(TAG, "removeActivity: SIZE-->"+activities.size());
}
//關閉所有的Activity
public static void finishAll()
{
for(Activity activity:activities)
{
if(!activity.isFinishing())
{
activity.finish();
}
}
}
}
在活動管理器中,我們通過一個List來暫存活動,然後提供了一個addActivity()方法用於向List中添加一個活動,提供了一個removeActivity()方法用於從List中移除活動,最後提供了一個finishAll()方法用於將List中存儲的活動全部銷毀掉。
接下來修改BaseActivity中的代碼,如下所示:
public class BaseActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//將當前正在創建的活動添加到活動管理器裡
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
//將一個馬上要銷毀的活動從活動管理器裡移除
ActivityCollector.removeActivity(this);
}
}
在onCreate()方法中調用了ActivityCollector.addActivity(this)方法,表明將當前正在創建的活動添加到活動管理器裡。然後在onDestory()中調用了ActivityCollector.removeActivity(this)方法,表明將一個馬上要銷毀的活動從活動管理器裡移除。
從此以後,不管你想在什麼地方退出程序,只需要調用ActivityCollector.finishAll()方法就可以了。
public class SeconeActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_secone);
findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(SeconeActivity.this,ThirdActivity.class);
startActivity(intent);
}
});
}
}
public class ThirdActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
findViewById(R.id.btn3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCollector.finishAll();
//殺掉當前進程
android.os.Process.killProcess(android.os.Process.myPid());
}
});
}
}
當然你還可以在銷魂所有活動的代碼後面在加上殺掉當前進程的代碼,以保證程序完全退出,殺掉進程的代碼如下:
android.os.Process.killProcess(android.os.Process.myPid());其中,killProcess()方法用於殺掉一個進程,它接收一個進程id的參數,我們可以通過myPid()方法獲得當前程序的進程id, 需要注意的是:killProcess()方法只能用於殺掉當前程序的進程,我們不能使用這個方法去殺掉其他程序。
android Gallery組件實現的iPhone圖片滑動效果實例
實現的效果圖,可左右滑動:一、先在將Gallery標簽放入:復制代碼 代碼如下:<?xml version=1.0 encoding=utf-8?&
Android應用開發之簡易、大氣音樂播放器實現專輯倒影效果
今天要實現的功能是實現專輯倒影效果,這個功能已經屬於圖像處理方面的了,對圖像處理我不怎麼在行,等一下會介紹一個很實用的工具類,專門用來進行圖像處理的。這個工具類不是我寫的
[Android測試] AS+Appium+Java+Win 自動化測試之八:使用PageObject模式和重封裝
一、 What? 什麼是PageObject?簡稱PO,這是一個設計模式,其實設計模式就是代碼的架構,一個整體的框架。例如mvc 就是模型-視圖-控制的一個代碼架構,mv
android 內存進程管理分析
1、 進程的地址空間在32位操作系統中,進程的地址空間為0到4GB,示意圖如下: 圖1 這裡主要說明一下Stack和Heap:Stack空