




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1
Android開發(fā)2024年3月11日上海理想信息產業(yè)〔集團〕Android開發(fā)準備工作Android開發(fā)所需的軟件及下載地址JDK1.6EclipseAndroidSDKADTAndroid開發(fā)準備工作AndroidSDK安裝1.下載AndroidSDK壓縮包(如android-sdk_r20.0.3-windows.zip),解壓縮后在文件夾中運行SDKManager.exe2.選擇android版本,點擊Installpackages下載SDKAndroid開發(fā)準備工作ADT安裝以及配置1.安裝ADT方法1:啟動Eclipse,點擊“Help”,選擇“InstallNewSorftware...”,點擊“Add”按鈕,輸入地址://dl-ssl.google/android/eclipse/以及名稱,點擊“OK”按鈕,然后按照提示完成后續(xù)操作。方法2:下載ADT壓縮包,按照方法1點擊“Add”按鈕后,選擇點擊“Archive...”按鈕,選擇下載好的壓縮包,點擊“OK”按鈕,然后按照提示完成后續(xù)操作2.配置ADT安裝ADT之后,重啟Eclipse,翻開菜單“Window”,依次選擇“Preferences”→“Android”,點擊“Browse...”選擇AndroidSDK路徑Android應用程序構架src/java原代碼存放目錄gen/自動生成目錄gen目錄中存放所有由Android開發(fā)工具自動生成的文件。目錄中最重要的就是R.java文件。這個文件由Android開發(fā)工具自動產生的。Android開發(fā)工具會自動根據你放入res目錄的xml界面文件、圖標與常量,同步更新修改R.java文件。正因為R.java文件是由開發(fā)工具自動生成的,所以我們應防止手工修改R.java。R.java在應用中起到了字典的作用,它包含了界面、圖標、常量等各種資源的id,通過R.java,應用可以很方便地找到對應資源。另外編繹器也會檢查R.java列表中的資源是否被使用到,沒有被使用到的資源不會編繹進軟件中,這樣可以減少應用在占用的空間。res/資源(Resource)目錄在這個目錄中我們可以存放應用使用到的各種資源,如xml界面文件,圖片或數據。具體請看ppt下方備注欄。AndroidManifest.xml功能清單文件這個文件列出了應用程序所提供的功能,在這個文件中,你可以指定應用程序使用到的效勞(如效勞、互聯(lián)網效勞、短信效勞、GPS效勞等等)。另外當你新添加一個Activity的時候,也需要在這個文件中進行相應配置,只有配置好后,才能調用此Activity。perties工程環(huán)境信息,一般是不需要修改此文件Activity生命周期Activity有三個狀態(tài):當它在屏幕前臺時〔位于當前任務堆棧的頂部〕,它是激活或運行狀態(tài)。它就是響應用戶操作的Activity。當它失去焦點但仍然對用戶可見時,它處于暫停狀態(tài)。即在它之上有另外一個Activity。這個Activity也許是透明的,或者沒有完全覆蓋全屏,所以被暫停的Activity仍對用戶可見。暫停的Activity仍然是存活狀態(tài)〔它保存著所有的狀態(tài)和成員信息并保持和窗口管理器的連接〕,但系統(tǒng)處于極低內存時仍然可以殺死這個Activity。完全被另一個Activity覆蓋時那么處于停止狀態(tài)。它仍然保存所有的狀態(tài)和成員信息。然而對用戶是不可見的,所以它的窗口將被隱藏,如果其它地方需要內存,那么系統(tǒng)經常會殺死這個Activity。當Activity從一種狀態(tài)轉變到另一種狀態(tài)時,會調用以下保護方法來通知這種變化:voidonCreate(BundlesavedInstanceState)voidonStart()voidonRestart()voidonResume()voidonPause()voidonStop()voidonDestroy()Activity生命周期這七個方法定義了Activity的完整生命周期。實現這些方法可以幫助我們監(jiān)視其中的三個嵌套生命周期循環(huán):Activity的完整生命周期自第一次調用onCreate()開始,直至調用onDestroy()為止。Activity在onCreate()中設置所有“全局”狀態(tài)以完成初始化,而在onDestroy()中釋放所有系統(tǒng)資源。例如,如果Activity有一個線程在后臺運行從網絡上下載數據,它會在onCreate()創(chuàng)立線程,而在onDestroy()銷毀線程。Activity的可視生命周期自onStart()調用開始直到相應的onStop()調用結束。在此期間,用戶可以在屏幕上看到Activity,盡管它也許并不是位于前臺或者也不與用戶進行交互。在這兩個方法之間,我們可以保存用來向用戶顯示這個Activity所需的資源。例如,當用戶不再看見我們顯示的內容時,我們可以在onStart()中注冊一個BroadcastReceiver來監(jiān)控會影響UI的變化,而在onStop()中來注消。onStart()和onStop()方法可以隨著應用程序是否為用戶可見而被屢次調用。Activity的前臺生命周期自onResume()調用起,至相應的onPause()調用為止。在此期間,Activity位于前臺最上面并與用戶進行交互。Activity會經常在暫停和恢復之間進行狀態(tài)轉換——例如當設備轉入休眠狀態(tài)或者有新的Activity啟動時,將調用onPause()方法。當Activity獲得結果或者接收到新的Intent時會調用onResume()方法。關于前臺生命周期循環(huán)的例子請見PPT下方備注欄。Activity生命周期添加新的Activity第一步:新建一個繼承Activity的類,如:NewActivitypublicclassNewActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState); //這里可以使用setContentView(R.layout.xxx)顯示某個視圖....}}第二步:需要在功能清單AndroidManifest.xml文件中添加進上面Activity配置代碼(紅色局部):<manifestxmlns:android="://schemas.android/apk/res/android"package="c"android:versionCode="1"android:versionName="1.0"><applicationandroid:icon="@drawable/icon"android:label="@string/app_name">..... <activityandroid:name=".NewActivity"android:label="新activity的頁面標題"/></application>...</manifest>android:name屬性值的前面加了一個點表示NewActivity是當前包下的類,如果類在應用的當前包下,可以省略點符號,如果類在應用的子包下必須加點,如:NewActivity類在包下可以這樣寫:<activityandroid:name=“.user.NewActivity“/>翻開新的Activity在一個Activity中可以使用系統(tǒng)提供的startActivity(Intentintent)方法翻開新的Activity,在翻開新的Activity前,你可以決定是否為新的Activity傳遞參數:第一種:翻開新的Activity,不傳遞參數publicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){ ....... Buttonbutton=(Button)this.findViewById(R.id.button);button.setOnClickListener(newView.OnClickListener(){//點擊該按鈕會翻開一個新的Activity publicvoidonClick(Viewv){//新建一個intent,第一個參數為當前Activity類對象,第二個參數為你要翻開的Activity類 startActivity(newIntent(MainActivity.this,NewActivity.class)); }});}}翻開新的Activity第二種:翻開新的Activity,并傳遞假設干個參數給它:publicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){ ....... button.setOnClickListener(newView.OnClickListener(){//點擊該按鈕會翻開一個新的Activity publicvoidonClick(Viewv){ Intentintent=newIntent(MainActivity.this,NewActivity.class)Bundlebundle=newBundle();//該類用作攜帶數據bundle.putString("name","參數");intent.putExtras(bundle);//附帶上額外的數據startActivity(intent); }});}}在新的Activity中接收前面Activity傳遞過來的參數:publicclassNewActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){ ........ Bundlebundle=this.getIntent().getExtras(); Stringname=bundle.getString("name");}}得到新翻開的Activity關閉后返回的數據使用系統(tǒng)提供的startActivityForResult(Intentintent,intrequestCode)方法翻開新的Activity,新的Activity關閉后會向前面的Activity傳回數據,為了得到傳回的數據,你必須在前面的Activity中重寫onActivityResult(intrequestCode,intresultCode,Intentdata)方法:publicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){ ....... Buttonbutton=(Button)this.findViewById(R.id.button);button.setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewv){ //第二個參數為請求碼,可以根據業(yè)務需求自己編號 startActivityForResult(newIntent(MainActivity.this,NewActivity.class),1); }});}//第一個參數為請求碼,即調用startActivityForResult()傳遞過去的值//第二個參數為結果碼,結果碼用于標識返回數據來自哪個新Activity@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ //得到新Activity關閉后返回的數據 Stringresult=data.getExtras().getString(“result”));}}當新Activity關閉后,新Activity返回的數據通過Intent進行傳遞,android平臺會調用前面Activity的onActivityResult()方法,把存放了返回數據的Intent作為第三個輸入參數傳入,在onActivityResult()方法中使用第三個輸入參數可以取出新Activity返回的數據。得到新翻開的Activity關閉后返回的數據使用startActivityForResult(Intentintent,intrequestCode)方法翻開新的Activity,新Activity關閉前需要向前面的Activity返回數據需要使用系統(tǒng)提供的setResult(intresultCode,Intentdata)方法實現:publicclassNewActivityextendsActivity{ @OverrideprotectedvoidonCreate(BundlesavedInstanceState){ ...... button.setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewv){ Intentintent=newIntent();//數據是使用Intent返回 intent.putExtra(“result”,“返回結果”);//把返回數據存入Intent NewActivity.this.setResult(RESULT_OK,intent);//設置返回數據 NewActivity.this.finish();//關閉Activity }}); }}setResult()方法的第一個參數值可以根據業(yè)務需要自己定義,上面代碼中使用到的RESULT_OK是系統(tǒng)Activity類定義的一個常量,值為-1,代碼片斷如下:publicclassandroid.app.Activityextends......{publicstaticfinalintRESULT_CANCELED=0;publicstaticfinalintRESULT_OK=-1;publicstaticfinalintRESULT_FIRST_USER=1;}IntentAndroid根本的設計理念是鼓勵減少組件間的耦合,因此Android提供了Intent(意圖),Intent提供了一種通用的消息系統(tǒng),它允許在你的應用程序與其它的應用程序間傳遞Intent來執(zhí)行動作和產生事件。使用Intent可以激活Android應用的三個核心組件:活動、效勞和播送接收器。撥打: Intentintent=newIntent(Intent.ACTION_CALL,Uri.parse("tel:"+tel)); startActivity(intent);發(fā)送短信: PendingIntentpi=PendingIntent.getBroadcast(context,0,newIntent(),0); SmsManagersmsManager=SmsManager.getDefault(); smsManager.sendTextMessage(tel,null,text,pi,null);數據存儲-SharedPreferencesAndroid提供了多種保存數據的方法,比方SharedPreferences類,它是一個輕量級的存儲類,特別適合用于保存軟件配置參數。使用SharedPreferences保存數據,其背后是用xml文件存放數據,文件存放在/data/data/<packagename>/shared_prefs目錄下:SharedPreferencessharedPreferences=getSharedPreferences("data",Context.MODE_PRIVATE);Editoreditor=sharedPreferences.edit();//獲取編輯器editor.putString("name","參數");editormit();//提交修改getSharedPreferences(name,mode)方法的第一個參數用于指定該文件的名稱,方法的第二個參數指定文件的操作模式,共有四種操作模式。如果希望SharedPreferences背后使用的xml文件能被其他應用讀和寫,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE權限。另外Activity還提供了另一個getPreferences(mode)方法操作SharedPreferences,這個方法默認使用當前類不帶包名的類名作為文件的名稱。數據存儲-FilesActivity提供了openFileOutput()方法可以用于把數據輸出到文件中。publicclassFileActivityextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){...FileOutputStreamoutStream=this.openFileOutput("data.txt",Context.MODE_PRIVATE);outStream.write("數據".getBytes());outStream.close();}}openFileOutput()方法的第一參數用于指定文件名稱,不能包含路徑分隔符“/”,如果文件不存在,Android會自動創(chuàng)立它。創(chuàng)立的文件保存在/data/data/<packagename>/files目錄,如:/data/data/cn./files/data.txt翻開存放在/data/data/<packagename>/files目錄應用私有的文件,可以使用Activity提供openFileInput()方法。FileInputStreaminStream=this.getContext().openFileInput("data.txt");Log.i("FileTest",readInStream(inStream));//readInStream()的方法請看本頁下面?zhèn)渥ⅰctivity還提供了getCacheDir()和getFilesDir()方法:getCacheDir()方法用于獲取/data/data/<packagename>/cache目錄getFilesDir()方法用于獲取/data/data/<packagename>/files目錄數據存儲-Files把文件存入SD卡要往SDCard存放文件,程序必須先判斷是否裝有SDCard,并且可以進行讀寫。注意:訪問SDCard必須在AndroidManifest.xml中參加訪問SDCard的權限if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){FilesdCardDir=Environment.getExternalStorageDirectory();//獲取SDCard目錄FilesaveFile=newFile(sdCardDir,“data.txt”);FileOutputStreamoutStream=newFileOutputStream(saveFile);outStream.write("數據".getBytes());outStream.close();}Environment.getExternalStorageState()方法用于獲取SDCard的狀態(tài),如果裝有SDCard,并且可以進行讀寫,那么方法返回的狀態(tài)等于Environment.MEDIA_MOUNTED。數據存儲-SQLiteAndroid集成了一個嵌入式關系型數據庫—SQLite,可以用來解決需要存儲、管理以及升級維護大量數據的情況。1.創(chuàng)立和翻開數據庫SQLiteDatabasemSQLiteDatabase=this.openOrCreateDatabase(“data.db”,MODE_PRIVATE,null);該語句會翻開一個名為data.db的數據庫,如果數據庫不存在那么創(chuàng)立一個。2.創(chuàng)立表Stringcreate_table="CREATETABLEtable1(_idINTEGERPRIMARYKEY,numINTERGER,dataTEXT)";mSQLiteDatabase.execSQL(create_table);3.向表里添加一條數據ContentValuescv=newContentValues();cv.put("num",1);cv.put("data","測試數據庫數據");/*插入數據*/mSQLiteDatabase.insert(“table1”,null,cv);也可以先寫一條insert語句,再使用execSQL()方法執(zhí)行。Stringinsert="INSERTINTOtabl1(_id,num,data)values(1,1,"測試數據庫數據")";mSQLiteDatabase.execSQL(insert);數據存儲-SQLite4.刪除一條數據mSQLiteDatabase.execSQL("DELETEFROMtable1WHERE_id=0");5.修改一條數據ContentValuescv=newContentValues();cv.put(TABLE_NUM,1);cv.put(TABLE_DATA,"修改后的數據");/*更新數據*/mSQLiteDatabase.update(TABLE_NAME,cv,"num=1",null);6.刪除表mSQLiteDatabase.execSQL("DROPTABLEtable1");7.關閉數據庫mSQLiteDatabase.close();8.刪除數據庫this.deleteDatabase(“data.db”);數據存儲-SQLite9.查詢數據Cursorcursor=mSQLiteDatabase.rawQuery(“select*fromtable1”,null);if(cursor!=null){if(cursor.moveToFirst()){do{
intnumColumn=cursor.getColumnIndex("num");
intnum=cursor.getInt(numColumn);
}while(cursor.moveToNext());}}播送接收-BroadcastReceiver播送接收者〔BroadcastReceiver〕用于異步接收播送Intent,播送Intent的發(fā)送是通過調用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()來實現的。通常一個播送Intent可以被訂閱了此Intent的多個播送接收者所接收。要實現一個播送接收者方法如下:第一步:繼承BroadcastReceiver,并重寫onReceive()方法。publicclassIncomingSMSReceiverextendsBroadcastReceiver{ @OverridepublicvoidonReceive(Contextcontext,Intentintent){ }}第二步:訂閱感興趣的播送Intent,訂閱方法有兩種:第一種:使用代碼進行訂閱IntentFilterfilter=newIntentFilter("vider.Telephony.SMS_RECEIVED");IncomingSMSReceiverreceiver=newIncomingSMSReceiver();registerReceiver(receiver,filter);第二種:在AndroidManifest.xml文件中的<application>節(jié)點里進行訂閱:<receiverandroid:name=".IncomingSMSReceiver"><intent-filter><actionandroid:name="vider.Telephony.SMS_RECEIVED"/></intent-filter></receiver>播送接收-監(jiān)聽短信當系統(tǒng)收到短信時,會發(fā)出一個action名稱為的播送Intent,該Intent存放了接收到的短信內容,使用名稱“pdus”即可從Intent中獲取短信內容。publicclassIncomingSMSReceiverextendsBroadcastReceiver{privatestaticfinalStringSMS_RECEIVED="vider.Telephony.SMS_RECEIVED";@OverridepublicvoidonReceive(Contextcontext,Intentintent){if(intent.getAction().equals(SMS_RECEIVED)){ SmsManagersms=SmsManager.getDefault(); Bundlebundle=intent.getExtras(); if(bundle!=null){ Object[]pdus=(Object[])bundle.get("pdus"); SmsMessage[]messages=newSmsMessage[pdus.length]; for(inti=0;i<pdus.length;i++)messages[i]=SmsMessage.createFromPdu((byte[])pdus[i]); for(SmsMessagemessage:messages){ Stringmsg=message.getMessageBody(); Stringto=message.getOriginatingAddress(); sms.sendTextMessage(to,null,msg,null,null);}}}}}在AndroidManifest.xml文件中的<application>節(jié)點里對接收到短信的播送Intent進行訂閱:<receiverandroid:name=".IncomingSMSReceiver"><intent-filter><actionandroid:name="vider.Telephony.SMS_RECEIVED"/></intent-filter></receiver>在AndroidManifest.xml文件中添加以下權限:<uses-permissionandroid:name="android.permission.RECEIVE_SMS"/><!--接收短信權限--><uses-permissionandroid:name="android.permission.SEND_SMS"/><!--發(fā)送短信權限-->播送接收-電池變化、開機啟動除了短信到來播送Intent,Android還有很多播送Intent,如:開機啟動、電池電量變化、時間已經改變等播送Intent。接收電池電量變化播送Intent,在AndroidManifest.xml文件中的<application>節(jié)點里訂閱此Intent:<receiverandroid:name=".IncomingSMSReceiver"><intent-filter><actionandroid:name="ent.action.BATTERY_CHANGED"/></intent-filter></receiver>接收開機啟動播送Intent,在AndroidManifest.xml文件中的<application>節(jié)點里訂閱此Intent:<receiverandroid:name=".IncomingSMSReceiver"><intent-filter><actionandroid:name="ent.action.BOOT_COMPLETED"/></intent-filter></receiver>并且要進行權限聲明:<uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>播送接收通常一個BroadcastReceiver對象的生命周期不超過5秒,所以在BroadcastReceiver里不能做一些比較耗時的操作,如果需要完成一項比較耗時的工作,可以通過發(fā)送Intent給Activity或Service,由Activity或Service來完成。publicclassIncomingSMSReceiverextendsBroadcastReceiver{ @OverridepublicvoidonReceive(Contextcontext,Intentintent){//發(fā)送Intent啟動效勞,由效勞來完成比較耗時的操作Intentservice=newIntent(context,XxxService.class);context.startService(service);//發(fā)送Intent啟動Activity,由Activity來完成比較耗時的操作IntentnewIntent=newIntent(context,XxxActivity.class);context.startActivity(newIntent); }}效勞-ServiceAndroid中的效勞和windows中的效勞是類似的東西,效勞一般沒有用戶操作界面,它運行于系統(tǒng)中不容易被用戶覺察,可以使用它開發(fā)如監(jiān)控之類的程序。效勞的開發(fā)比較簡單,如下:第一步:繼承Service類publicclassSMSServiceextendsService{}第二步:在AndroidManifest.xml文件中的<application>節(jié)點里對效勞進行配置:<serviceandroid:name=".SMSService"/>效勞不能自己運行,需要通過調用Context.startService()或Context.bindService()方法啟動效勞。這兩個方法都可以啟動Service,但是它們的使用場合有所不同。使用startService()方法啟用效勞,調用者與效勞之間沒有關連,即使調用者退出了,效勞仍然運行。使用bindService()方法啟用效勞,調用者與效勞綁定在了一起,調用者一旦退出,效勞也就終止。如果打算采用Context.startService()方法啟動效勞,在效勞未被創(chuàng)立時,系統(tǒng)會先調用效勞的onCreate()方法,接著調用onStart()方法。如果調用startService()方法前效勞已經被創(chuàng)立,屢次調用startService()方法并不會導致屢次創(chuàng)立效勞,但會導致屢次調用onStart()方法。采用startService()方法啟動的效勞,只能調用Context.stopService()方法結束效勞,效勞結束時會調用onDestroy()方法。如果打算采用Context.bindService()方法啟動效勞,在效勞未被創(chuàng)立時,系統(tǒng)會先調用效勞的onCreate()方法,接著調用onBind()方法。這個時候調用者和效勞綁定在一起,調用者退出了,系統(tǒng)就會先調用效勞的onUnbind()方法,接著調用onDestroy()方法。如果調用bindService()方法前效勞已經被綁定,屢次調用bindService()方法并不會導致屢次創(chuàng)立效勞及綁定(也就是說onCreate()和onBind()方法并不會被屢次調用)。如果調用者希望與正在綁定的效勞解除綁定,可以調用unbindService()方法,調用該方法也會導致系統(tǒng)調用效勞的onUnbind()-->onDestroy()方法。效勞-Service效勞常用生命周期回調方法如下:onCreate()該方法在效勞被創(chuàng)立時調用,該方法只會被調用一次,無論調用多少次startService()或bindService()方法,效勞也只被創(chuàng)立一次。onDestroy()該方法在效勞被終止時調用。與采用Context.startService()方法啟動效勞有關的生命周期方法onStart()只有采用Context.startService()方法啟動效勞時才會回調該方法。該方法在效勞開始運行時被調用。屢次調用startService()方法盡管不會屢次創(chuàng)立效勞,但onStart()方法會被屢次調用。與采用Context.bindService()方法啟動效勞有關的生命周期方法onBind()只有采用Context.bindService()方法啟動效勞時才會回調該方法。該方法在調用者與效勞綁定時被調用,當調用者與效勞已經綁定,屢次調用Context.bindService()方法并不會導致該方法被屢次調用。onUnbind()只有采用Context.bindService()方法啟動效勞時才會回調該方法。該方法在調用者與效勞解除綁定時被調用。效勞-Service采用Context.startService()方法啟動效勞的代碼如下:publicclassHelloActivityextendsActivity{@Overridepublicvoid
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年甘肅省天水市投資發(fā)展(集團)有限公司招聘筆試參考題庫及參考答案詳解
- 特殊工時考勤管理制度
- 特種崗位安全管理制度
- 環(huán)保工程公司管理制度
- 環(huán)保煤炭運輸管理制度
- 環(huán)衛(wèi)公司項目管理制度
- 玻璃加工安全管理制度
- 班級心理委員管理制度
- 2025年中國郵政集團有限公司湖南省分公司校園招聘筆試備考試題帶答案詳解
- 2025年湖北省高新產業(yè)投資集團有限公司招聘筆試模擬試題參考答案詳解
- 小學民法典主題班會教案
- 2025年江西報業(yè)傳媒集團招聘題庫帶答案分析
- 公司退貨流程管理制度
- MHD多相流體系統(tǒng)的建模與仿真-洞察闡釋
- 辦公軟件實操試題及詳細答案
- 礦產品銷售合作合同范本
- 米粉項目可行性分析報告
- 江蘇省常州市聯(lián)盟學校2022-2023學年高一下學期期末聯(lián)考數學試題(學生版)
- 2024-2025學年七年級下冊歷史期末測試模擬卷(統(tǒng)編版)(含答案)
- 2025年下半年山西晉城國投特種設備檢驗檢測限公司招聘6人易考易錯模擬試題(共500題)試卷后附參考答案
- 有效溝通技巧在護理中的應用試題及答案
評論
0/150
提交評論