在 CountDownTimer 封闭范围内访问上下文

Accessing Context in a CountDownTimer enclosed scope

我正在制作一个 SplashActivity,当我想将 SplashActivity 上下文传递到 运行 包含在 CountDownTimer 中的静态函数时遇到了问题使用 this 关键字和 getBaseContext() 方法的范围。

TL;DR

我想弄清楚如何访问封闭范围内的 SplashActivity 上下文,即 CountDownTimer

我试过的:

  1. SplashActivity temp = this

    我已经对 ActivityonCreate 方法做出了 SplashActivity temp = this; 声明,但决定这对我所做的所有 Activity 都无效,因为我必须为我制作的每个 Activity class 声明 Activity

  2. Context temp = this.getBaseContext();

    和上面基本一样,但是对所有的都比较灵活Activity但是在我看来还是对程序没有效果。

  3. ClassName.staticFunction(super.getBaseContext());

    这行不通,因为 CountDownTimer 不是 SplashActivityextends,尽管这种解决方案正是我正在寻找的解决方案。

代码:

SplashActivity.java

public class SplashActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //...
        new CountDownTimer(3000,100) {
            //...
            public void onFinish() {
                MainActivity.StartActivity( SplashActivity.getBaseContext() );
                //SplashActivity. will throw an error, must replace
                finish();
            }
        }.start();
    }
}

MainActivity.java


public class MainActivity extends Activity {
    ...
    public static void StartActivity(Context mContext) {
        Intent act = new Intent(mContext, MainActivity.class);
        mContext.startActivity(act);
    }
}

我的期望:

运行 MainActivity.StartActivity(something.getBaseContext) in SplashActivity CountDownTimer 不创建任何额外变量(因为内存优化),创建一个 MainActivity 视图。

目前,我正在使用这个解决方案:

final Context self = this;

其中插入:

public class SplashActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        final Context self = this; // HERE
        //...
        new CountDownTimer(3000,100) {
            public void onFinish() {
                MainActivity.StartActivity( self ); //HERE
    ...