自學Android第五天——活動的一些小技巧

知曉當前是在哪一個活動

找到 項目名稱——>app——>src——>main——>java——>包,右鍵new——>java class。我們命名為BaseActivity。內(nèi)容如下:

public class BaseActivityextends AppCompatActivity {

@Override

? ? protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

? ? ? ? Log.d("BaseActivity",getClass().getSimpleName());

? ? }

@Override

? ? protected void onDestroy(){

super.onDestroy();

? ? ? ? ActivityCollector.removeActivity(this);


? ? }

}


隨時隨地退出程序

創(chuàng)建和上面一樣的方法。名字命名為ActivityCollector,內(nèi)容如下:

public class ActivityCollector {

public static Listactivities=new ArrayList<>();

? ? public static void addActivity(Activity activity){

activities.add(activity);

? ? }

public static void removeActivity(Activity activity){

activities.remove(activity);

? ? }

public static void finishAll(){

for(Activity activity:activities){

if(!activity.isFinishing()){

activity.finish();

? ? ? ? ? ? }

}

activities.clear();

? ? }

}

把下面的代碼添加到你要實現(xiàn)退出程序功能的活動中,例如我們在第三個活動添加該功能,代碼如下:

public class ThirdActivityextends AppCompatActivity {

@Override

? ? protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

? ? ? ? setContentView(R.layout.activity_third);

? ? ? ? Button but_3=(Button)findViewById(R.id.but_3);

? ? ? ? //退出程序

? ? ? ? but_3.setOnClickListener(new View.OnClickListener() {

@Override

? ? ? ? ? ? public void onClick(View v) {

????????????????ActivityCollector.finishAll();

? ??????????????//殺死當前進程

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

? ? ? ? ? ? }

????????});

? ? }

你可以選擇在銷毀所有活動的代碼后面再加上殺掉當前進程的代碼,以保證程序完全退出,殺掉進程的代碼在代碼前加了注釋的。

啟動活動的最佳寫法

前面見過用Intent進行跳轉(zhuǎn),這樣沒問題。但是在真正的項目開發(fā)中經(jīng)常會有對接的問題出現(xiàn)。這時我們換一種寫法,就可以解決這種窘境。

例如我們修改SecondActivity中的代碼,如下所示:

public class SecondActivityextends BaseActivity {

????//啟動活動(最佳方法)

? ? public static void actionStart(Context context,String data1,String data2){

????????Intent intent=new Intent(context,SecondActivity.class);

? ? ? ? intent.putExtra("param1",data1);

? ? ? ? intent.putExtra("param2",data2);

? ? ? ? context.startActivity(intent);

? ? }

//其他的方法用點表示

。。。

}

現(xiàn)在我們只需要在FirstActivity中的onClick() 方法里添加SecondActivity.actionStart(FirstActivity.this,"data1","data1");這樣一目了然,你可以清晰地知道啟動SecondActivity需要傳遞哪些數(shù)據(jù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容