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

问题描述 投票:0回答:1

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

TL; DR

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

我尝试过的事情:

  1. [SplashActivity temp = this

    我已经对SplashActivity temp = this;onCreate方法进行了Activity声明,但是决定这对于我所做的所有Activity都无效,因为我必须为每个Activity声明Activity我上过的课。

  2. [Context temp = this.getBaseContext();

    与上面基本相同,但对所有Activity都更灵活,但我认为对于该程序仍然无效。

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

    这不起作用,因为CountDownTimer不是extendsSplashActivity,尽管这种解决方案是我一直在寻找的解决方案。

代码:

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) SplashActivity中运行CountDownTimer而不创建任何其他变量(由于内存优化),创建MainActivity视图。

java android android-context countdowntimer
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.