Enforce what is passed to an activity in an intent similar to the newInstance pattern for fragments
Your solution looks great to me, apply Fragment's instantation to a Class seems to be a good pattern and a nice idea. However, I have just a little tip for this static method: pass the current Context instead of Application Context: 

public class SampleActivity extends BaseActivity {
    public static Intent createIntent(Context context, String[] a, String b) {
        Intent intent = new Intent(context, SampleActivity.class);
        intent.putExtra(AppConstants.KEY_ARG_ARRAY,  a);
        intent.putExtra(AppConstants.KEY_ARG_STRING, b);
        return intent;
    }
}


This allows you to get the right Activity calling the new Intent instead of whole application context. So, the called syntax could be:

startActivity( SampleActivity.createIntent(this, a, b) );
// 'this' being the calling class Context (like 'MainActivity.this' or 'getActivity()')