Я делаю 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
представление.