標籤:安卓 系統 相容 java 虛擬機器
//相容安卓的系統
package cn.com.likeshow;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException; import myvm.test.myActivity;/* * author 張章 * * time 2014-5-12 * */public class Activity {private Bundle bundle;//savedInstanceState用於activity見傳遞參數protected void onCreate(Bundle savedInstanceState) {this.bundle=savedInstanceState;} protected Intent getIntent(){return bundle.getIntent();}protected static Context getApplicationContext(){return null;}protected void startActivity(Intent intent) {//通過反射完成對象建立Activity activity=intent.getPreActivity();Class class1=intent.getAfterActivity(); Constructor con=class1.getConstructors()[0]; try {Activity activity2=(Activity) con.newInstance();//把Bundele最為參數傳入,調用getIntent()時會從bundle中擷取activity間傳遞的參數activity2.onCreate(new Bundle(intent));} catch (Exception e) {e.printStackTrace();} }protected void setContentView(int id) {System.out.println("setContentView " + id);}protected boolean onCreateOptionsMenu(Menu menu) { return true;}protected boolean onOptionsItemSelected(MenuItem item) { return true;}protected static class Toast{private Context applicationContext;private static String s;private int t;private Toast(Context applicationContext2, String string, int i) {this.applicationContext=applicationContext2;this.s=string;this.t=i;}public static Toast makeText(Context applicationContext,String string, int i) { //實際安卓中不一定是返回Toast對象,該案例只用於類比安卓實現原理return new Toast(applicationContext,string,i); } public static void show() { int len=s.length()+2; for(int i=0;i<len;i++) System.out.print("*"); System.out.print("\n*" +s+"*\n"); for(int i=0;i<len;i++) System.out.print("*"); System.out.println(); }}public static void main(String[] args) {//方便起見,假定預設啟動myActivity,當然可以通過讀取設定檔,知道預設啟動的Activitynew myActivity().onCreate(new Bundle(null));}}
package cn.com.likeshow;public class Bundle {private Intent intent;public Bundle (Intent intent){this.intent=intent;}public Intent getIntent() {return intent;}public void setIntent(Intent intent) {this.intent = intent;}}
package cn.com.likeshow;import java.io.ObjectInputStream.GetField;import java.util.HashMap;import java.util.Map;public class Intent {private Map<String ,Object>map;private Activity activity;private Class class1;public Intent(Activity activity, Class<? extends Activity> class1){map=new HashMap<String, Object>();this.activity=activity;this.class1=class1;}public void putExtra(String str,Object obj){map.put(str, obj);}public Object getExtra(String str){return map.get(str);}public Activity getPreActivity(){return activity;}public Class getAfterActivity(){return class1;}}
//==========簡易樣本安卓代碼如下=========================================================
package myvm.test;import cn.com.likeshow.Activity;import cn.com.likeshow.Bundle;import cn.com.likeshow.Intent;public class myActivity extends Activity { @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);System.out.println("myActivity 啟動");setContentView(1);Toast.makeText(getApplicationContext(),"哈哈Toast",0).show();Intent intent=new Intent(myActivity.this, SecondActivity.class);intent.putExtra("myActivity", "hello 2activity");startActivity(intent);Toast.makeText(getApplicationContext(),"SecondActivity啟動完畢",0).show();Intent intent2=new Intent(myActivity.this, ThirdActivity.class);intent2.putExtra("1", "hello 3activity");startActivity(intent2);Toast.makeText(getApplicationContext(),"ThirdActivity啟動完畢",0).show();}}
package myvm.test;import cn.com.likeshow.Activity;import cn.com.likeshow.Bundle;import cn.com.likeshow.Intent; public class SecondActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);System.out.println("SecondActivity 啟動");setContentView(2);Intent intent=getIntent();Object object=intent.getExtra("myActivity");Object object2=intent.getExtra("1");System.out.println("SecondActivity "+object);System.out.println("SecondActivity "+object2);Toast.makeText(getApplicationContext(),"SecondActivity執行完畢",0).show();}}
package myvm.test;import cn.com.likeshow.Activity;import cn.com.likeshow.Bundle;import cn.com.likeshow.Intent; public class ThirdActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);System.out.println("ThirdActivity 啟動");setContentView(3);Intent intent=getIntent();Object object=intent.getExtra("myActivity");Object object2=intent.getExtra("1");System.out.println("ThirdActivity "+object);System.out.println("ThirdActivity "+object2);Toast.makeText(getApplicationContext(),"ThirdActivity執行完畢",0).show();}}
========== =================