• 从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 布局内容!

  • 相关阅读:
    Nginx 本地建立负载均衡(Windows环境)
    Nginx 代理本地文件夹(Windows环境)
    PostGIS 使用Mysql_fdw同步ArcGIS填坑记录
    PostGIS mysql_fdw操作日志(留观)
    PostGIS mysql_fdw使用(Linux)
    PostGIS mysql_fdw安装(Linux)
    PostGIS 安装教程(Linux)(二)
    PostGIS 安装教程(Linux)(一)
    Linux 命令记录
    PostGIS 查看表属性(字段、类型、是否为空)
  • 原文地址:https://www.cnblogs.com/sydmobile/p/11859281.html
Copyright © 2020-2023  润新知