Android Activity 使用技巧

显示当前界面对应的Activity名

新建一个Java类,不用在AndroidManifest.xml中注册。

BaseActivity.java

public class BaseActivity extends AppCompatActivity {
    private static final String TAG = "BaseActivity";
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //获取当前类的简写类名
        Log.d(TAG, "onCreate: "+getClass().getSimpleName());
    }
}

在每个Activity中都继承新建的这个Java类,每启动一个界面,就会在日志中输出当前界面的Activity名称。

在任何地方都可以退出程序

新建一个Java类,不用在AndroidManifest.xml中注册。

就是新建一个Activity集合,每次启动Activity,就将其存储,在系统将其销毁之前从集合中移除,需要退出程序时,则遍历注销。

Activity管理器:

ActivityCollector.java

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();
            }
        }
        //kill当前进程
        android.os.Process.killProcess(android.os.Process.myPid());
    }
}

BaseActivity.java

public class BaseActivity extends AppCompatActivity {
    private static final String TAG = "BaseActivity";
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: "+getClass().getSimpleName());
        //添加至Activity管理器中
        ActivityCollector.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //从Activity管理器中删除
        ActivityCollector.removeActivity(this);
    }
}

最好的启动Activity的方法

避免传递数据时,不清楚目标活动需要哪些数据的解决方案。

A→B

A调用B的actionStart方法时,就知道了B需要什么数据了。

A:

B.actionStart(A.this,args1,args2);

B:

public static void actionStart(Context context,String args1,String args2){
    Intent intent = new Intent(context,B.class);
    intent.putExtra("xxx",args1);
    intent.putExtra("xxx",args2);
    context.startActivity(intent);
}
posted @ 2020-05-09 18:55  lisztomania  阅读(218)  评论(0编辑  收藏  举报