zoukankan      html  css  js  c++  java
  • 常用关于Android活动的实践技巧

     1 //知晓当前是在哪一个活动
     2 /* 新建一个BaseActivity类(Java class), 继承自AppCompatActivity
     3  * 重写 onCreate()方法,已有的活动无需再继承自AppCompatActivity, 而是继承自BaseActivity,当跳转到某个活动界面,Toast消息框就会显示该活动名称
     4  */
     5 package com.example.activitytest;
     6 
     7 import android.app.Activity;
     8 import android.os.Bundle;
     9 import android.support.annotation.Nullable;
    10 import android.support.v7.app.AppCompatActivity;
    11 import android.util.Log;
    12 import android.widget.Toast;
    13 
    14 /**
    15  * Created by admin on 2017/1/22.
    16  */
    17 
    18 public class BaseActivity extends AppCompatActivity {
    21     @Override
    22     protected void onCreate(@Nullable Bundle savedInstanceState) {
    23         super.onCreate(savedInstanceState);
    24 
    25         //采用Toast消息提示的方式, 显示当前是哪个活动名
    26         Toast.makeText(BaseActivity.this, getClass().getSimpleName(), Toast.LENGTH_SHORT).show();
    27     }
    
     1 /* 随时随地退出程序
     2  * 实现ActivityCollector类作为活动管理器
     3  */
     4 package com.example.activitytest;
     5 
     6 import android.app.Activity;
     7 
     8 import java.util.ArrayList;
     9 import java.util.List;
    10 
    11 /**
    12  * Created by admin on 2017/1/22.
    13  */
    14 
    15 public class ActivityCollector {
    16     /*
    17     通过一个List来暂存活动
    18      */
    19     public static List<Activity> activities = new ArrayList<>();
    20     //提供一个addActivity()方法用于从List中移除活动.
    21     public static void addActivity(Activity activity) {
    22         activities.add(activity);
    23     }
    24     public static void removeActivity(Activity activity) {
    25         activities.remove(activity);
    26     }
    27 
    28     //最后提供了一个finishAll()方法用于将List中存储的活动全部销毁掉
    29     //不管在什么地方想退出程序,只需要调用ActivityCollector.finishAll(),就可以了
    30     public static void finishAll() {
    31         for (Activity activity : activities) {
    32             if (!activity.isFinishing()) {
    33                 activity.finish();
    34             }
    35         }
    36     }
    38 }
    39 
    40 //在BaseActivity类再修改一下代码
    41 package com.example.activitytest;
    42 
    43 import android.app.Activity;
    44 import android.os.Bundle;
    45 import android.support.annotation.Nullable;
    46 import android.support.v7.app.AppCompatActivity;
    47 import android.util.Log;
    48 import android.widget.Toast;
    49 
    50 /**
    51  * Created by admin on 2017/1/22.
    52  */
    53 
    54 public class BaseActivity extends AppCompatActivity {
    55 
    56     @Override
    57     protected void onCreate(@Nullable Bundle savedInstanceState) {
    58         super.onCreate(savedInstanceState);
    59         //表明将  当前创建  的活动添加到活动管理器中.
    60         ActivityCollector.addActivity(this);
    61         Toast.makeText(BaseActivity.this, getClass().getSimpleName(), Toast.LENGTH_SHORT).show();
    62     }
    63     @Override
    64     protected void onDestroy() {
    65         super.onDestroy();
    66         ActivityCollector.removeActivity(this);
    67     }
    68 }
     1 /* 启动活动的最佳写法 
     2  * 会遇到问题: 在自己负责的部分需要启动SecondActivity这个活动的功能,
     3  * 却不清楚这个活动需要传递那些数据(项目中接手别人的代码)
     4  * 修改SecondActivity中的代码
     5  */
     6 public static void actionStart(Context context, String data1, String data2) {
     7         Intent intent = new Intent(context, SecondActivity.class);
     8         intent.putExtra("param1", data1);
     9         intent.putExtra("param2", data2);
    10         context.startActivity(intent);
    11     }
    12 
    13 /* 这样,即使不用阅读SecondActivity中代码,不去询问负责SecondActivity编
    14  *写的同事, 也可以非常清晰的直达启动SecondActivity需要传递哪些数据. 
    15  *此时在活动FirstActivity中启动SecondActivity只需要一小行代码
    16  */
    17  SecondActivity.actionStart(FirstActivity.this, "data1", "data2");

    学习书籍:《第一行代码》

  • 相关阅读:
    Aspose.Words三 创建表格
    Aspose.words一 DOM结构
    Aspose.words四 bookmark
    Aspose.Words五 MergeField
    为什么使用Reazor
    C#实现发送给QQ邮件
    T4模板之基础篇
    avalon子孙元素属性监听
    C#设置WebBrowser IE浏览器版本
    【GoLang】GoLang GOPATH 工程管理 最佳实践
  • 原文地址:https://www.cnblogs.com/douzujun/p/6340967.html
Copyright © 2011-2022 走看看