从静态方法开始一个Android活动

我想从Android设备上的静态Java方法开始一个活动。 我没有任何上下文或任何作为parameter passing给静态函数。 为了开始活动,我必须使用当前的运行方法调用“startActivity”作为“this”指针。 那么有没有办法获得当前的运行活动?

Solutions Collecting From Web of "从静态方法开始一个Android活动"

在您的应用程序扩展类Application中创build一个类,定义一个静态上下文并使用您的应用程序上下文对其进行初始化 您可以公开这个类的静态方法来访问定义的静态引用。 而已。

 class MyApp extends Application{ private static Context mContext; public void onCreate(){ mContext = this.getApplicationContext(); } public static Context getAppContext(){ return mContext; } } 

现在你可以使用这个静态方法来访问你的应用程序的任何地方的上下文。

您只能访问静态方法内的静态variables/对象。 所以你需要这样实现

 public class MainActivity extends Activity { private static Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = this; } public static void goToLoginActivity() { Intent login = new Intent(mContext, LoginActivity.class); mContext.startActivity(login); } } 

注:但这不是这样做的正确方法,这可能会导致窗口泄漏问题。

更好的方法是像这样的parameter passing活动/上下文对象。

 public static void goToLoginActivity(Context mContext) { Intent login = new Intent(mContext, LoginActivity.class); mContext.startActivity(login); }