編輯:關於Android編程
import android.os.SystemClock; import android.test.InstrumentationTestCase; import android.util.Log; public class Sampletest extends InstrumentationTestCase { private final static String TAG = "Sampletest"; private MainActivity activity = null; private Button btn = null; private TextView tv = null; //初始化設置,初始化頁面對象與控件對象 @Override protected void setUp() { try { super.setUp(); } catch (Exception e) { e.printStackTrace(); } Intent intent = new Intent(); intent.setClassName("com.example.test", MainActivity.class.getName()); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); activity = (MainActivity) getInstrumentation().startActivitySync(intent); tv = (TextView) activity.findViewById(R.id.tv); btn = (Button) activity.findViewById(R.id.btn); } //垃圾清理與資源回收,測試完畢退出頁面 @Override protected void tearDown() { activity.finish(); try { super.tearDown(); } catch (Exception e) { e.printStackTrace(); } } //活動功能測試,凡是public且以test打頭的函數,均會被JUnit測試到 public void testActivity() throws Exception { Log.d(TAG, "test the Activity"); SystemClock.sleep(1000);//先sleep一會,這時的文字是hello for(int i=0; i<1000; i++) { //點擊1000次 getInstrumentation().runOnMainSync(new PerformClick(btn)); } SystemClock.sleep(2000);//再sleep一會,這時看到的文字是Hello Android Log.d(TAG, tv.getText().toString()); assertEquals("Hello World", tv.getText().toString()); //注意,這裡做了一個判斷,判斷當前tv標簽控件的文字是不是Hello World,當然不是,所以這句判斷是錯的!!!! } private class PerformClick implements Runnable { Button btn; public PerformClick(Button button) { btn = button; } public void run() { btn.performClick(); } } }
import com.robotium.solo.Solo; import com.example.android.notepad.NotesList; import android.test.ActivityInstrumentationTestCase2; public class NotePadTest extends ActivityInstrumentationTestCase2{ private Solo solo; public NotePadTest() { super(NotesList.class); } @Override public void setUp() throws Exception { //初始化一個Solo對象 solo = new Solo(getInstrumentation(), getActivity()); } @Override public void tearDown() throws Exception { //測試結束要關閉所有打開的頁面 solo.finishOpenedActivities(); } //測試添加記錄 public void testAddNote() throws Exception { //解鎖屏幕 solo.unlockScreen(); //點擊菜單項“Add note” solo.clickOnMenuItem("Add note"); //聲明NoteEditor這個頁面已經打開 solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor"); //往序號為0的編輯框輸入“Note 1” solo.enterText(0, "Note 1"); //回到上一頁 solo.goBack(); //點擊菜單項“Add note” solo.clickOnMenuItem("Add note"); //往序號為0的編輯框輸入“Note 2” //注意enterText和typeText的區別在於:typeText是模擬鍵盤輸入, //所以typeText的字符串中如果包含“\n”會轉為換行符,而enterText只會原樣顯示字符串“\n” solo.typeText(0, "Note 2"); //回到上一頁 solo.goBack(); //捕捉屏幕截圖並保存到默認路徑:Environment.getExternalStorageDirectory()+"Robotium-Screenshots/". solo.takeScreenshot(); //檢查是否找到“Note 1”和“Note 2” boolean notesFound = solo.searchText("Note 1") && solo.searchText("Note 2"); //如果找到則通過測試 assertTrue("Note 1 and/or Note 2 are not found", notesFound); } public void testEditNote() throws Exception { //點擊列表視圖的第二項,即進入到該記錄的編輯頁面 solo.clickInList(2); //隱藏軟鍵盤 solo.hideSoftKeyboard(); //變更屏幕方向為水平方向 solo.setActivityOrientation(Solo.LANDSCAPE); //點擊菜單項“Edit title” solo.clickOnMenuItem("Edit title"); //往序號為0的編輯框追加輸入“ test” solo.enterText(0, " test"); //回到上一頁 solo.goBack(); //設置屏幕方向為垂直方向 solo.setActivityOrientation(Solo.PORTRAIT); //使用通配符查找是否存在指定文本 boolean noteFound = solo.waitForText("(?i).*?note 1 test"); //如果找到則通過測試 assertTrue("Note 1 test is not found", noteFound); } public void testRemoveNote() throws Exception { //使用通配符查找是否存在包含test的文本 solo.clickOnText("(?i).*?test.*"); //點擊菜單項“Delete” solo.clickOnMenuItem("Delete"); //查找是否存在文本“Note 1 test” boolean noteFound = solo.searchText("Note 1 test"); //如果沒找到則通過測試 assertFalse("Note 1 Test is found", noteFound); //長按文本“Note 2” solo.clickLongOnText("Note 2"); //在彈出的上下文菜單中點擊文本“Delete” solo.clickOnText("Delete"); //等待100毫秒後查找是否存在文本“Note 2” noteFound = solo.waitForText("Note 2", 1, 100); //如果沒找到則通過測試 assertFalse("Note 2 is found", noteFound); } }
效果圖,每隔1秒,變換一下時間 xml: 復制代碼 代碼如下: <RelativeLayout xmlns:android=http://schemas
應用進程保活基本就是圍繞兩個方面來展開:1 盡量保證進程不被殺死。2 進程被殺死後復活。細分如下:1)Service重啟2)進程守護3)Receiver觸發4)Alarm
最近工作中,遇到了幾個內存優化的問題,1.應用退出後,此應用進程保持了不少內存得不到釋放,用工具強制gc也無法釋放。2.應用進入某些頁面瞬間請求分配內存過大。此兩個問題對
版本:1.0 日期:2014.6.11 2014.6.12版權:© 2014 kince 轉載注明出處 ImageView是開發中經常使用到的一個控件,也可以