Upgrade to Pro — share decks privately, control downloads, hide ads and more …

process_phoenix

Ce37cf75fa85b89a33916545978c64de?s=47 @hotchemi
January 22, 2016

 process_phoenix

kyobashi.dex #02

Ce37cf75fa85b89a33916545978c64de?s=128

@hotchemi

January 22, 2016
Tweet

Transcript

  1. +ShintaroKatafuchi ProcessPhoenix

  2. • +ShintaroKatafuchi • @hotchemi • Recruit Technologies Co.,Ltd. • PermissionsDispatcher,

    Android-Rate…
  3. Environment variants

  4. Dev1 Dev2 Dev4 Dev3 Dev5 Dev6 Web API

  5. buildTypes  {
        debug  {
      

             minifyEnabled  true
        }
 }   productFlavors  {
        dev1  {
                buildConfigField  "String",  "ENVIRONEMNT_NAME",  "\"dev1\""
        }
        dev2  {
                buildConfigField  "String",  "ENVIRONEMNT_NAME",  "\"dev2\""
        }
        dev3  {
                buildConfigField  "String",  "ENVIRONEMNT_NAME",  "\"dev3\""
        }
        dev4  {
                buildConfigField  "String",  "ENVIRONEMNT_NAME",  "\"dev4\""
        }
        dev5  {
                buildConfigField  "String",  "ENVIRONEMNT_NAME",  "\"dev5\""
        }
        dev6  {
                buildConfigField  "String",  "ENVIRONEMNT_NAME",  "\"dev6\""
        }
        dev7  {
                buildConfigField  "String",  "ENVIRONEMNT_NAME",  "\"dev7\""
        }
        product  {}
 } Build variants
  6. Dev1 version please! OK, I’ll build. Dev2 version please! OK,

    I’ll build.
  7. Just tired…

  8. JakeWharton/ProcessPhoenix

  9. ProcessPhoenix.triggerRebirth(this);   ProcessPhoenix.triggerRebirth(this,  nextIntent);

  10. JakeWharton/u2020

  11. None
  12. @OnClick(R.id.restart_with_intent)  void  restartWithIntent()  {
    Intent  nextIntent  =  new  Intent(this,

     MainActivity.class);
    nextIntent.putExtra(EXTRA_TEXT,  "Hello!");
    ProcessPhoenix.triggerRebirth(this,  nextIntent);
 }   u2020/src/internalDebug/java/com/jakewharton/u2020/ui/debug/DebugView.java
  13. Implementation

  14. public  final  class  ProcessPhoenix  extends  Activity  {
    private  static

     final  String  KEY_RESTART_INTENT  =  "phoenix_restart_intent";
 
    public  static  void  triggerRebirth(Context  context)  {
        triggerRebirth(context,  getRestartIntent(context));
    }   }
  15. private  static  Intent  getRestartIntent(Context  context)  {
    Intent  defaultIntent  =

     new  Intent(ACTION_MAIN,  null);
    defaultIntent.addFlags(FLAG_ACTIVITY_NEW_TASK  |  FLAG_ACTIVITY_CLEAR_TASK);
    defaultIntent.addCategory(CATEGORY_DEFAULT);
 
    String  packageName  =  context.getPackageName();
    PackageManager  packageManager  =  context.getPackageManager();
    for  (ResolveInfo  resolveInfo  :  packageManager.queryIntentActivities(defaultIntent,  0))  {
        ActivityInfo  activityInfo  =  resolveInfo.activityInfo;
        if  (activityInfo.packageName.equals(packageName))  {
            defaultIntent.setComponent(new  ComponentName(packageName,  activityInfo.name));
            return  defaultIntent;
        }
    }
    throw  new  IllegalStateException("Unable  to  determine  default  activity  for  "
            +  packageName
            +  ".  Does  an  activity  specify  the  DEFAULT  category  in  its  intent  filter?");
 }
  16. public  static  void  triggerRebirth(Context  context,  Intent  nextIntent)  {
    Intent

     intent  =  new  Intent(context,  ProcessPhoenix.class);
    intent.addFlags(FLAG_ACTIVITY_NEW_TASK);  //  In  case  we  are  called  with  non-­‐Activity  context.
    intent.putExtra(KEY_RESTART_INTENT,  nextIntent);
    context.startActivity(intent);
    if  (context  instanceof  Activity)  {
        ((Activity)  context).finish();
    }
    Runtime.getRuntime().exit(0);  //  Kill  kill  kill!
 }
  17. @Override  protected  void  onCreate(Bundle  savedInstanceState)  {
    super.onCreate(savedInstanceState);
 
  

     Intent  intent  =  getIntent().getParcelableExtra(KEY_RESTART_INTENT);
    startActivity(intent);
    finish();
    Runtime.getRuntime().exit(0);  //  Kill  kill  kill!
 }
  18. Runtime.getRuntime().exit(0);  //  Kill  kill  kill!

  19. Thx, good debugging.