我正在制作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
视图。 最佳答案
目前,我正在使用以下解决方案:
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
...