在我的主要启动活动中,我有一个调用runnable的处理程序,该处理程序会延迟下一个活动的开始。我已经删除了静态引用,但是我知道我的处理程序正在引起内存泄漏。
public class MainSplashActivity extends AppCompatActivity {
private int SPLASH_TIME_OUT = 5000;
private TextView heyDj;
private ImageView spinninRecords;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
heyDj = (TextView) findViewById(R.id.hey_dj_intro);
spinninRecords = (ImageView) findViewById(R.id.image_album_splash);
Animation myFadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein);
heyDj.startAnimation(myFadeInAnimation);
spinninRecords.startAnimation(myFadeInAnimation);
Animation mySpinAnimation = AnimationUtils.loadAnimation(this, R.anim.spin_logo);
spinninRecords.startAnimation(mySpinAnimation);
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
Intent homeIntent = new Intent(getApplicationContext(), LandingActivity.class);
startActivity(homeIntent);
finish();
}
}, SPLASH_TIME_OUT);
}
@Override
protected void onDestroy()
{
super.onDestroy();
}
}
使用可运行的程序创建处理程序,以免泄漏的正确方法是什么?
答案 0 :(得分:1)
万事俱备,如果可以选择不使用Handler
,请不要使用Handler
。
在这种情况下,由于postDelayed()
上有View
,因此您可以切换到该位置并避免使用任何与Handler
相关的恶作剧。