

吳嘉俊(Stef)高級講師
擁有多年的Java開發(fā)經(jīng)驗,CTO,EasyJF開源團隊創(chuàng)始人之一、負(fù)責(zé) EasyJWeb項目的開發(fā)和維護。曾在國內(nèi)多家大型軟件公司負(fù)責(zé)公司內(nèi)部框架的開發(fā)和維護,為多個大中型公司做過架構(gòu)和技術(shù)咨詢。曾組織開發(fā)了藍源 裝飾行業(yè)ERP、美國EMR、藍源服裝行業(yè)連鎖管理系統(tǒng)、藍源SaaS服務(wù)平臺、藍源Eloan互聯(lián)網(wǎng)金融綜合解決方案等系統(tǒng)產(chǎn)品。具有非常豐富項目開發(fā)和 管理經(jīng)驗。
擅長技術(shù):主流JavaEE,Android技術(shù),對 Spring、JPA、Hibernate、 MyBatis、Struts2、MongoDB、Redis等技術(shù)領(lǐng)域有深入研究。
吳老師有豐富的Java培訓(xùn)經(jīng)驗和IT培訓(xùn)行業(yè)顧問經(jīng)驗;授課激情,有感染力 ,注重對底層原理的剖析和理解;善于培養(yǎng)學(xué)生對編程的興趣;
Java工程師的工資待遇怎么樣?
Java工程師的工資待遇怎么樣?
Java軟件工程師一般月薪范圍在4000-10000元,遠遠超過了應(yīng)屆畢業(yè)生月薪 2500元的平均水平。通常來說,有一年工作經(jīng)驗的Java高級軟件工程師的薪酬大致在年薪10—13萬左右。
從Java的應(yīng)用領(lǐng)域來分,Java語言的應(yīng)用方向主要表現(xiàn)在以下三個方面:首 先是大中型的商業(yè)應(yīng)用;其次是桌面應(yīng)用,就是常說的C/S應(yīng)用;再次是移動領(lǐng)域應(yīng)用。
綜上而言JAVA就業(yè)方向為:可以從事JSP網(wǎng)站開發(fā)、Java編程、Java游戲開 發(fā)、Java桌面程序設(shè)計,以及其他與Java語言編程相關(guān)的工作。可進入電信、銀行、保險專業(yè)軟件開發(fā)公司等從事軟件設(shè)計和開發(fā)工作。
Java基礎(chǔ)語法
Java基礎(chǔ)語法
Java基礎(chǔ)語法
流程控制語句
Java 編譯器執(zhí)行流程
if 分支結(jié)構(gòu)
switch 選擇結(jié)構(gòu)與相關(guān)規(guī)則
循環(huán)結(jié)構(gòu)
for 循環(huán)
while 循環(huán)
do-while 循環(huán)語句
各語句性能對比與應(yīng)用場景
特殊流程控制語句
方法的聲明與使用
方法調(diào)用的過程分析
跨類調(diào)用方法
參數(shù)的值傳遞
方法的重載 Overload
2種判斷(獲?。m攁ctivity的方法
>
有時候,需要獲取當(dāng)前位于棧頂?shù)腶ctivity的實例。這里介紹2種方法,以及各自適用的場景。**后有demo測試數(shù)據(jù)以供參考
**種方法:獲取棧頂activity的實例 應(yīng)用場景:項目中,activity都繼承于一個BaseActivity,在這個base中,有個廣播接收器,收到廣播,就彈出一個dialog?,F(xiàn)打開多個activity,這個時候,**三方推送等方法,發(fā)出一個廣播,base接收到。因為只需要在棧頂?shù)腶ctivity彈出,而不是每個activity都彈出,所以,需要獲取棧頂activity的實例(即上下文,傳給dialog的構(gòu)造方法),而不能簡單的傳個this,否則,會導(dǎo)致每個activity都有dialog彈出。
獲取方法: 在application中:
public class MyApplication extends Application { PRivate static MyApplication mInstance; private Activity app_activity = null; @Override public void onCreate() { super.onCreate(); mInstance = this; initGlobeActivity(); } private void initGlobeActivity() { registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { app_activity = activity; Log.e("onActivityCreated===", app_activity ""); } @Override public void onActivityDestroyed(Activity activity) { app_activity = activity; Log.e("onActivityDestroyed===", app_activity ""); } /** Unused implementation **/ @Override public void onActivityStarted(Activity activity) { app_activity = activity; Log.e("onActivityStarted===", app_activity ""); } @Override public void onActivityResumed(Activity activity) { app_activity = activity; Log.e("onActivityResumed===", app_activity ""); } @Override public void onActivityPaused(Activity activity) { app_activity = activity; Log.e("onActivityPaused===", app_activity ""); } @Override public void onActivityStopped(Activity activity) { app_activity = activity; Log.e("onActivityStopped===", app_activity ""); } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } }); } /** * 獲取實例 * @return */ public static MyApplication getInstance() { return mInstance; } /** * 公開方法,外部可** MyApplication.getInstance().getCurrentActivity() 獲取到當(dāng)前**上層的activity */ public Activity getCurrentActivity() { return app_activity; } }注意:initGlobeActivity()、getInstance()、getCurrentActivity() 這3個方法
使用方法: 在base的展示dialog方法中:
Activity currentActivity = MyApplication.getInstance().getCurrentActivity(); Dialog dialog = new Dialog(currentActivity, R.style.PushDialog);————————————————————————————————–
第二種方法:獲取棧頂activity的完整包名 應(yīng)用場景:僅僅為了判斷當(dāng)前activity是不是在棧頂,以便決定要不要彈toast等等。 注意:獲取到的僅僅是完整包名,判斷當(dāng)前activity在不在棧頂,需要用到String方法中的contains方法等。這個時候需要注意,以免出錯。如:棧頂activity名為AB,里面包含A,就認(rèn)為A是在棧頂,就出錯了。**好這個activity的名字很特殊,和其他的沒有重合部分
在工具類中創(chuàng)建方法:
/** * 獲得棧中**頂層的Activity * * @param context * @return */ public static String getTopActivity(Context context) { android.app.ActivityManager manager = (android.app.ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); List<ActivityManager.RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(1); if (runningTaskInfos != null) { return (runningTaskInfos.get(0).topActivity).toString(); } else return null; }使用:
String topActivity_1 = Util.getTopActivity(this); Log.e("topActivity_1", topActivity_1);測試數(shù)據(jù): 現(xiàn)有3個activity:MainActivity_1、MainActivity_2、MainActivity_3 **個中有按鈕,點擊跳轉(zhuǎn)到第二個,第二個中有按鈕,點擊跳轉(zhuǎn)到第三個 代碼:
package com.chen.demo; import android.app.Activity; import android.os.Bundle; import android.view.Window; /** * 基礎(chǔ)Activity */ public abstract class BaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //不顯示title requestWindowFeature(Window.FEATURE__TITLE); initview(); } abstract void initview(); } package com.chen.demo; import android.content.Intent; import android.util.Log; import android.view.View; import android.widget.TextView; public class MainActivity_1 extends BaseActivity { TextView tv; @Override void initview() { setContentView(R.layout.activity_main_1); String topActivity_1 = Util.getTopActivity(this); Log.e("topActivity_1", topActivity_1); tv = (TextView) findViewById(R.id.tv); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MainActivity_1.this.startActivity(new Intent(MainActivity_1.this, MainActivity_2.class)); } }); } } import android.content.Intent; import android.util.Log; import android.view.View; import android.widget.TextView; public class MainActivity_2 extends BaseActivity { TextView tv_2; @Override void initview() { setContentView(R.layout.activity_main_2); String topActivity_2 = Util.getTopActivity(this); Log.e("topActivity_2", topActivity_2); tv_2 = (TextView) findViewById(R.id.tv_2); tv_2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MainActivity_2.this.startActivity(new Intent(MainActivity_2.this, MainActivity_3.class)); } }); } } package com.chen.demo; import android.util.Log; public class MainActivity_3 extends BaseActivity { @Override void initview() { setContentView(R.layout.activity_main_3); String topActivity_3 = Util.getTopActivity(this); Log.e("topActivity_3", topActivity_3); } }日志:
程序剛啟動 02-24 10:56:12.997 13043-13043/com.chen.demo E/onActivityCreated===: com.chen.demo.MainActivity_1@eff3d78 02-24 10:56:13.030 13043-13043/com.chen.demo E/topActivity_1: ComponentInfo{com.chen.demo/com.chen.demo.MainActivity_1} 02-24 10:56:13.032 13043-13043/com.chen.demo E/onActivityStarted===: com.chen.demo.MainActivity_1@eff3d78 02-24 10:56:13.032 13043-13043/com.chen.demo E/onActivityResumed===: com.chen.demo.MainActivity_1@eff3d78 點擊MainActivity_1中按鈕去往MainActivity_2 02-24 10:56:47.692 13043-13043/com.chen.demo E/onActivityPaused===: com.chen.demo.MainActivity_1@eff3d78 02-24 10:56:47.718 13043-13043/com.chen.demo E/onActivityCreated===: com.chen.demo.MainActivity_2@53c82a7 02-24 10:56:47.722 13043-13043/com.chen.demo E/topActivity_2: ComponentInfo{com.chen.demo/com.chen.demo.MainActivity_2} 02-24 10:56:47.724 13043-13043/com.chen.demo E/onActivityStarted===: com.chen.demo.MainActivity_2@53c82a7 02-24 10:56:47.724 13043-13043/com.chen.demo E/onActivityResumed===: com.chen.demo.MainActivity_2@53c82a7 02-24 10:56:48.099 13043-13043/com.chen.demo E/onActivityStopped===: com.chen.demo.MainActivity_1@eff3d78 點擊MainActivity_2中按鈕去往MainActivity_3 02-24 10:57:21.984 13043-13043/com.chen.demo E/onActivityPaused===: com.chen.demo.MainActivity_2@53c82a7 02-24 10:57:21.999 13043-13043/com.chen.demo E/onActivityCreated===: com.chen.demo.MainActivity_3@f2b18ec 02-24 10:57:22.003 13043-13043/com.chen.demo E/topActivity_3: ComponentInfo{com.chen.demo/com.chen.demo.MainActivity_3} 02-24 10:57:22.003 13043-13043/com.chen.demo E/onActivityStarted===: com.chen.demo.MainActivity_3@f2b18ec 02-24 10:57:22.003 13043-13043/com.chen.demo E/onActivityResumed===: com.chen.demo.MainActivity_3@f2b18ec 02-24 10:57:22.382 13043-13043/com.chen.demo E/onActivityStopped===: com.chen.demo.MainActivity_2@53c82a7
相關(guān)推薦:
蘇州JAVA培訓(xùn) 蘇州JAVA培訓(xùn)班 蘇州JAVA培訓(xùn)機構(gòu)
體驗課預(yù)約試聽
倒計時
課程熱線:
客服在線時間:早上9點~下午6點,其他時間請在線預(yù)約報名或留言,謝謝!