Android中的Activity的小技巧

最近從新拾起郭大神的Android書籍溫故而知新。android

1.獲取Activity所在的task棧,能夠一目瞭然哪些Activity在一個task棧中: ide

     在onCreate中添加: Log.d("Android","Task is is" +getTaskId());this

2.觀察log中當前Activity的實例,從而更能對比出四種不一樣的啓動模式的差異:spa

    Log.d("XXActivity",this.toString());code

3.利用onSaveInstanceState()保存數據:blog

1 @Override
2     protected void onSaveInstanceState(Bundle outState) { 3 super.onSaveInstanceState(outState); 4 String tempData = "Something you just typed"; 5 outState.putString("key","tempData"); 6 7 }

4. 恢復數據:這裏保存數據和取出數據都是使用的Bundle,此外Intent和Bundle能夠一塊兒用於傳遞數據:進程

1 @Override
2     public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
3         super.onCreate(savedInstanceState, persistentState);
4         setContentView(R.layout.activity_main);
5         if(savedInstanceState != null){
6             String tempData = savedInstanceState.getString("key");
7             Log.d(TAG,tempData);
8         }
9     }

 

5. 知曉當前在哪一個Activity界面:rem

通常的項目裏都有相似BaseActivity的基類,咱們只需在該類的onCreate方法中打印一個log就能夠識別當前界面了get

@Override
     public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
         super.onCreate(savedInstanceState, persistentState);
             Log.d("BaseActivity",getClass().getSimpleName());
     }

 

6. 隨時隨地退出應用:it

  須要一個專門的集合類對全部的活動進行管理,下面的ActivityCollector類做爲活動管理器:

 1 public class ActivityCollector {
 2     public static List<Activity> activities = new ArrayList<>();
 3 
 4     public static void addActivity(Activity activity) {
 5         activities.add(activity);
 6     }
 7 
 8     public static void removeActivity(Activity activity) {
 9         activities.remove(activity);
10     }
11 
12     public static void finishAll() {
13         for(Activity activity :activities) {
14             if(!activity.isFinishing()) {
15                 activity.finish();
16             }
17         }
18     }
19 }

 在活動管理器中,經過List來暫存活動,而後提供了一個addActivity()方法用於向list中添加活動,同時提供了一個removeActivity()方法用於移除活動從該list中,最後提供一個finishAll()的方法將List中的活動所有銷燬。

調用:只需在onCreate中添加:ActivityCollector.addActivity(this); 

         在onDestory()中添加:ActivityCollector.removeActivity(this);

         在須要銷燬所有活動的地方調用:ActivityCollector.finishAll();

          1 android.os.Process.killProcess(android.os.Process.myPid()); killProcess()只能用於殺掉當前程序的進程,不能殺掉其餘程序。

7.啓動活動的最佳寫法:  

1 public static void actionStart(Context context, String data1, String data2) {
2          Intent intent = new Intent(context,SecondActivity.class);
3          intent.putExtra("param1", data1);
4          intent.putExtra("param2",data2);
5          context.startActivity(intent);
6      }

 

   比較基礎,打好底才能建高樓。

相關文章
相關標籤/搜索