处理程序和可运行泄漏

时间:2019-07-07 22:55:00

标签: android

在我的主要启动活动中,我有一个调用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();
    }
}

使用可运行的程序创建处理程序,以免泄漏的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

万事俱备,如果可以选择不使用Handler,请不要使用Handler

在这种情况下,由于postDelayed()上有View,因此您可以切换到该位置并避免使用任何与Handler相关的恶作剧。