从0系统学Android--2.6 Activity 的最佳实践

从0系统学Android--2.6 Activity 的最佳实践


本系列文章目录更多精品文章分类

本系列持续更新中....

实践中的技巧

2.6.1 知晓当前是在哪个 Activity

这个其实很简单,就是新建一个 BaseActivity ,然后让这个类继承 AppCompatActivity,并重写 onCreate() 方法:

public class BaseActivity extends AppCompatActivity{
  
  @Override
  protected void onCreate(Bundle saveInstanceState){
    super.onCreate(saveInstanceState);
    Log.e("BaseActivity",getClass().getSimpleName());
  }
}

这样再让我们的每个 Activity 都继承自这个 BaseActivity ,这样每次打开一个页面就会打印这个页面的类名了。

2.6.2 随时随地退出程序

如果启动了好几个 Activity,那么如何退出程序呢?还有点多次返回键吗?

解决思路:专门写一个管理所有 Activity 的类。

public class ActivityCollector{
  public static List<Activity> activities = 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();
  }
}

然后修改 BaseActivity 代码

@override
protected void onCreate(Bundle saveInstanceState){
  super.onCreate(saveInstanceState);
  Log.e("BaseActivity",getClass().getSimpleName());
  ActivityCollector.addActivity(this);
}

@Override
protected void onDestroy(){
  super.onDestroy();
  ActivityCollector.removeActivity(this);
}

当然我们也可以在销毁所有 Activity 代码后面再加上杀掉当前进程的代码,保持程序完全退出,杀掉进程代码:

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

这个方法只能杀掉当前的进程,无法杀掉其他程序。

启动 Activity 的最佳写法

比如要启动 Acitivity A,就在 A 中添加方法

public static void actionStart(Context context,String data1,String data1){
  Intent intent = new Intent(context,ActivityA.class);
  intent.putExtra("param1",data1);
  intent.putExtra("param2",data2);
  context.startActivity(intent);
}

下一节开始学习 UI 布局内容!

posted @ 2019-11-14 18:06  sydMobile  阅读(97)  评论(0编辑  收藏  举报