Android 运行时获得当前Activity引用
一、问题来源
在封装Toast工具类时,发现不论在哪里调用showToast方法都需要传入一个Context ,非常不方便。
public static void toastShow( Context context , String string){
((Activity)context).runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context , string , Toast.LENGTH_LONG).show();
}
});
}
我想要到达的效果是直接调用toastshow(String)
,所以要求在toastshow方法内部获得Context/Activity引用。
二、解决方法
系统中没有提供直接获得Activity或者Context的静态方法,所以需要我们自己去维护一个前台运行的Activity的引用。
1. 在Application中维护当前Activity
public class MyApplication extends Application {
private static final String TAG = "MyApplication";
private static Activity mCurrentActivity = null ;