专栏首页Android开发者家园从0系统学Android--2.6 Activity 的最佳实践

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

本文分享自微信公众号 - Android开发者家园(Android_De_Home),作者:sydMobile

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从0系统学Android-2.4 Activity 的生命周期

    Android 中的 Activity 是可以层叠的。我们每次启动一个新的 Activity,就会覆盖在原来的 Activity 上面,然后点击 back 键就...

    开发者
  • Android 入门--Activity

    简单的来说,一个 Activity 包含了用户可以看到的界面,用来和用户进行交互。一个应用程序中可以有零个或者多个 Activity。零个 Activity 的...

    开发者
  • 从0系统学Android--2.5Activity启动模式

    Activity 的启动模式一共有四种,分别是:standard、singleTop、singleTask、singleInstance 。在实际开发中根据特定...

    开发者
  • 聊聊springboot2的MappingsEndpoint

    spring-boot-actuator-autoconfigure-2.0.1.RELEASE-sources.jar!/org/springframewor...

    codecraft
  • (小笔记/网站推荐)如何看引物跨是否跨内含子?

    今天问师弟的要了几管引物打算做PCR验证一下我的实验模板。   但是需要确定一下我这批引物不能跨基因的内含子,拿到了这一批引物序列,如何去看到底跨不跨内含子呢...

    liu_ll
  • 教你如何选择微交易正规平台

    炒期货是近一两年迅速火爆的一种投资。但在这股热潮中,不少虚假交易平台钻了管理的漏洞,它们号称是有着海外雄厚实力的投资公司,办公场地“高端、大气、上档次”。可是,...

    用户3147999
  • Java设计模式学习记录-桥接模式

    这次介绍结构型设计模式中的第二种模式,桥接模式。 使用桥接模式的目的就是为了解耦,松散的耦合更利于扩展,但是会增加相应的代码量和设计难度。

    纪莫
  • [android] activity的启动模式

    在一些特殊的情况下,为了避免糟糕的用户体验,如果发现任务栈的栈顶存在这个activity了,那么久不重复创建了,这种模式是singleTop的启动模式,单一顶部

    陶士涵
  • 【C语言笔记】getchar()、getche()、getch()的区别

    函数功能:读取控制台输入的字符,并保存在键盘缓冲区中。直到用户按回车为止(回车字符也放在缓冲区中)。

    正念君
  • 通过VG方式给CentOS 7的root分区扩容

    我有个VPS,因为不能自己安装系统,每次都得提交工单让他们帮助安装,而他们使用的也是模板安装,系统盘只给20G,/dev/mapper/centos-root分...

    徐大嘴

扫码关注云+社区

领取腾讯云代金券