我正在制作SplashActivity
,当我想使用SplashActivity
关键字和CountDownTimer
方法将this
上下文传递到在getBaseContext()
封闭范围内运行的静态函数中时遇到问题。
TL; DR
我试图弄清楚如何在封闭的范围内访问SplashActivity
上下文,即CountDownTimer
。
我尝试过的事情:
[SplashActivity temp = this
我已经对SplashActivity temp = this;
的onCreate
方法进行了Activity
声明,但是决定这对于我所做的所有Activity
都无效,因为我必须为每个Activity
声明Activity
我上过的课。
[Context temp = this.getBaseContext();
与上面基本相同,但对所有Activity
都更灵活,但我认为对于该程序仍然无效。
[ClassName.staticFunction(super.getBaseContext());
这不起作用,因为CountDownTimer
不是extends
的SplashActivity
,尽管这种解决方案是我一直在寻找的解决方案。
代码:
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
视图。