Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 安卓學習筆記:隨時隨地退出程序

安卓學習筆記:隨時隨地退出程序

編輯:關於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()方法只能用於殺掉當前程序的進程,我們不能使用這個方法去殺掉其他程序。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved