How to maintain context switching between two activity?

Easy way I tried its working, but u need java client v3.1

package Appium;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidKeyCode;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class ContextSwitchBetween2Activity{

public static AndroidDriver<WebElement> _driver;

@BeforeClass
public void setUpAppium() throws InterruptedException, IOException {
	
	DesiredCapabilities capabilities = new DesiredCapabilities();   
	AppCapabilitiesSetUp(capabilities);
	System.out.println("Before calling appium");
	_driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4725/wd/hub"), capabilities);
	System.out.println("After calling appium");		
	
}

@Test
public void ContextSwitchBetween2ActivityTest() throws InterruptedException{
	
	// Wait for first app to load
	By webView = By.className("android.webkit.WebView");
    WebDriverWait wait = new WebDriverWait(_driver,300);
	wait.until(ExpectedConditions.visibilityOfElementLocated(webView));
    
	// Start Second app
	String appPackage="appPackage2";
	String appActivity="appActivity2";
	_driver.startActivity(appPackage2,appActivity2);	
	
	// Press Home Key
	_driver.sendKeyEvent(AndroidKeyCode.HOME);
	
	// KEYCODE_APP_SWITCH
	_driver.sendKeyEvent(0x000000bb);
	
	// Tap our first app
	List<WebElement> elem = _driver.findElements(By.className("android.widget.FrameLayout"));
	for (int i=0;i<elem.size()-1;i++){
		System.out.println("elem.get(i).getAttribute(name) :: " + elem.get(i).getAttribute("name")) ;
		if (elem.get(i).getAttribute("name").equals("App Name 1 text")){
			System.out.println("Tapping :: " + elem.get(i).getAttribute("name")) ;
			_driver.tap(1, elem.get(i), 100);
			break;
		}
		
	}			
	Thread.sleep(4000);
}

@AfterClass(alwaysRun=true)
public void teardown(){
	_driver.quit();
}

public DesiredCapabilities AppCapabilitiesSetUp(DesiredCapabilities cap){
	cap.setCapability(CapabilityType.BROWSER_NAME,"");
	cap.setCapability("platformVersion","4.4.4");
	cap.setCapability("platformName","Android");
	cap.setCapability("deviceName","deviceName");
	cap.setCapability("appPackage","appPackage1");
	cap.setCapability("appActivity","appActivity1");						
	return cap;
	
}

}