안내 페이지가 처음 입장하는지 여부

2164 단어
잔말 말고 코드부터 올려.
우선 첫 번째 진입 여부를 판단한 후 각각 처리하다
boolean mFirst = isFirstEnter(SplashActivity.this,SplashActivity.this.getClass().getName());
if(mFirst)
    mHandler.sendEmptyMessageDelayed(Constant.SWITCH_GUIDACTIVITY,100);
else
    mHandler.sendEmptyMessageDelayed(Constant.SWITCH_MAINACTIVITY,100);
private boolean isFirstEnter(Context context, String className){
    if(context==null || className==null||"".equalsIgnoreCase(className))return false;
    String mResultStr = context.getSharedPreferences(Constant.SHAREDPREFERENCES_NAME, MODE_PRIVATE)
            .getString(Constant.KEY_GUIDE_ACTIVITY, "");//         com.my.MainActivity
    if(mResultStr.equalsIgnoreCase("false"))
        return false;
    else
        return true;
}
public class Constant {
    /**
     *           
     */
    public static final String SHAREDPREFERENCES_NAME = "my_pref";
    public static final String KEY_GUIDE_ACTIVITY = "guide_activity";

    public final static int SWITCH_MAINACTIVITY = 1000;
    public final static int SWITCH_GUIDACTIVITY = 1001;
}

이어서 주요 부분이 왔는데,
handler가 메시지를 보냈는데 원래handler에 직접 올라가 봤는데 메모리 유출이 발생할 수 있다는 것을 발견하여 약한 인용을 사용했습니다.
private MyHandler mHandler = new MyHandler(SplashActivity.this);
private class MyHandler extends Handler{
    private final WeakReference weakReference;

    public MyHandler(SplashActivity activity){
         weakReference =  new WeakReference<>(activity);
    }

    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        if(msg.what ==Constant.SWITCH_MAINACTIVITY){
            if(weakReference.get()!=null){
                weakReference.get().startActivity(new Intent(SplashActivity.this,MainActivity.class));
                finish();
            }
        }
        else{
            if(weakReference.get()!=null){

                weakReference.get().startActivity(new Intent(SplashActivity.this,GuideActivity.class));
                finish();
            }
        }
    }
}

좋은 웹페이지 즐겨찾기