Android 将活动作为参数传递是否不好安卓

Android 将活动作为参数传递是否不好安卓,android,android-activity,Android,Android Activity,我是Android新手,所以不太熟悉什么是好的/坏的编码实践 将一个活动作为参数传递给另一个类是否被认为是不好的做法 下面或多或少是我想做的: public class myClass { MyActivity activity; public myClass(MyActivity activity) { this.activity = activity; } // do something involving 'activity' } 我

我是Android新手,所以不太熟悉什么是好的/坏的编码实践

将一个活动作为参数传递给另一个类是否被认为是不好的做法

下面或多或少是我想做的:

public class myClass {

    MyActivity activity;

    public myClass(MyActivity activity) {
        this.activity = activity;
    }

    // do something involving 'activity'
}
我发现将活动作为参数传递给我的活动非常有用,因为(a)可以立即访问其中的所有属性,并且(B)非常干净;这样做所需的最少代码行


我知道在某些语言中,这样做被认为是“不好的做法”。我想知道Android是否也是这样?(或者一般来说是Java)

这取决于您试图做什么,但它可能是合适的。有时,您可能只需要活动的上下文,而不需要活动本身。这只是依赖注入的一种形式

这取决于你想做什么,但也可能是适当的。有时,您可能只需要活动的上下文,而不需要活动本身。这只是依赖注入的一种形式

您可以处理活动继承自的上下文。传递上下文更有意义,因为上下文类通常都是这样。上下文可能有许多您需要的方法

public class myClass {

    Context context;

    public myClass(Context context) {
        this.context = context;
    }

    // do something involving 'activity'
}
活动的继承树:

java.lang.Object
   ↳    android.content.Context
       ↳    android.content.ContextWrapper
           ↳    android.view.ContextThemeWrapper
               ↳    android.app.Activity

您可以处理活动继承自的上下文。传递上下文更有意义,因为上下文类通常都是这样。上下文可能有许多您需要的方法

public class myClass {

    Context context;

    public myClass(Context context) {
        this.context = context;
    }

    // do something involving 'activity'
}
活动的继承树:

java.lang.Object
   ↳    android.content.Context
       ↳    android.content.ContextWrapper
           ↳    android.view.ContextThemeWrapper
               ↳    android.app.Activity

要访问属性,请编写一个可以从中获取信息的类。要从一个活动到另一个活动获取信息,请使用其意图。只有当您的
myClass
实例比您的
MyActivity
实例寿命更长时,这才有问题。如果是,您将泄漏
MyActivity
。但是,如果
myClass
实例的寿命不会超过活动,则没有问题。若要授予属性访问权限,请编写一个可以从中获取信息的类。要从一个活动到另一个活动获取信息,请使用其意图。只有当您的
myClass
实例比您的
MyActivity
实例寿命更长时,这才有问题。如果是,您将泄漏
MyActivity
。但是,如果
myClass
实例的寿命不会超过活动,则没有问题。