當前位置:首頁 » 安卓系統 » android獲取context

android獲取context

發布時間: 2022-12-11 22:11:50

Ⅰ Android中,Context,什麼是Context

context其實就是句柄,只不過不像windows一樣,每個資源都可以是一個句柄,Android的一個句柄包含了很多全局信息,比如說Activity就是一個句柄。

官方文檔的解釋是:Context提供了關於應用環境全局信息的介面。它是一個抽象類,它的執行被Android系統所提供。它允許獲取以應用為特徵的資源和類型。同時啟動應用級的操作,如啟動Activity,broadcasting和接收intents。

Ⅱ android自動化測試使用uiautomator怎樣獲取context

1、首先要聲明對象

UiObject XXX = new UiObject(new Selector) ;

2、其次對對象進行操作

操作類型包括:

執行類:文本輸入與清除、點擊/長按、拖動/滑動、

屬性類:文本內容、獲取子類、是否存在、是否可用。

click ():點擊對象

clickAndWaitForNewWindow (long timeout):點擊對象,等待新窗口出現,參數為等待超時時長,

clickAndWaitForNewWindow ():點擊對象,等待新窗口出現。

Ⅲ Android自定義控制項CustomView,構造函數的參數context是怎麼獲取的

很明顯,這個context是在調用構造函數的時候傳遞進來的。

以兩個參數的構造函數為例,這個一般是在xml使用該控制項後,解析xml時會調用構造方法。

那麼這個時候傳的context怎麼來的呢?從父類傳過來的,父類呢,也是從父類的父類傳過來的,頂層父類是Decorview,那麼看看Decorview的context怎麼來的。

上圖ActivityThread.java里的一個方法。

創建activity實例之前,我們會先創建context,而這個context實際上就是new 了一個ContextImpl。然後和activity綁定。所以getContext實際上就是一個ContextImpl實例。

Ⅳ Android在自身應用程序啟動時,怎麼在普通類中獲得Context對象,不藉助別的activity~!

若有View和其子類, 可以調用getContext()獲取。
若這個類跟這些都沒有關系,一般需要傳入context。

Ⅳ 自己關於Android上下文對象的理解

  Android中有個我們熟悉又陌生的對象Context(上下文),當我們啟動Activity的時候需要上下文,當我們使用dialog的時候我們需要上下文,但是上下文對象到底是個什麼東西呢?

  在Android api當中是這樣描述context對象的。

"Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc."

「是一個用於實現關於應用環境的整體信息的一個介面。這是一個由安卓系統提供的抽象類並且系統有對他進行實現。它允許訪問到應用特殊的資源和類,同時它也可以實現到應用級別的操作,例如:Activity的啟動,廣播的實現和接受intent等。」

一、Context的主要實現和繼續理解

  知道了context的大概描述,我們可以再繼續理解Context這個神秘的對象了,首先,作為基類,肯定有其它類去實現它,主要實現了context類的類是Activity,Service,Application。他們三個類雖然都是Context的子類,但是具體的繼承關系卻有些不大一樣:

Activity的繼承關系:

Service和Application的繼承關系:

  可以看出我們的Context其實就是我們熟知的Activity,Service,Application。

  在這3個類中,Activity的context對象和Application的context對象最容易弄混淆。

二、Context中的主要方法

  知道了Context的大概描述和他的一些繼承關系,我們對Context這個類有了一個大致的了解。現在可以看看在context中的一些方法,來加深對context的一個理解,有很多我們使用過的方法其實都是從Context這個類中實現而來。

  我們從Android api中查看Context類,這里出現了一個非常熟悉的方法:startActivity,可以看到其實Activity中的StartActivity方法是重寫了Context中的方法。

abstract void startActivity ( Intent intent)

Same as startActivity(Intent, Bundle) with no options specified.

abstract void startActivity ( Intent intent, Bundle options)

Launch a new activity.

同時context還可以訪問到資源文件,獲得資源文件中的信息。

abstract Resources getResources ()

Return a Resources instance for your application's package.

abstract SharedPreferences getSharedPreferences ( String name, int mode)

Retrieve and hold the contents of the preferences file 'name', returning a SharedPreferences through which you can retrieve and modify its values.

final String getString (int resId)

Return a localized string from the application's package's default string table.

final String getString (int resId, Object... formatArgs)

Return a localized formatted string from the application's package's default string table, substituting the format arguments as defined in Formatter and format(String, Object...) .

同時context不但可以開啟一個activity,同時還可以開啟或者關閉一個Service。

abstract ComponentName startService ( Intent service)

Request that a given application service be started.

abstract boolean stopService ( Intent service)

Request that a given application service be stopped.

  訪問Android Api 或者查看源碼可以看到,Context中還有很多訪問資源文件和程序之間互相通信的方法。

  可以看出context其實就是一個應用之中的手腳,可以通過他來拿取資源文件中的資源,還可以通過他來處理Activity和Service中的一些操作,這個類就是整個程序的樞紐,負責管理整個程序的通暢運行。

  我們可以通過分析一個Toast通知的源碼去分析context的去向和使用,來了解context到底做了些神馬操作:

public static Toast makeText(Context context, CharSequence text, int ration) {

   Toast result = new Toast(context);

   LayoutInflater inflate = (LayoutInflater)

   context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

   View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);

   TextView tv = (TextView)v.findViewById(com.android.internal.R.id.message);

   tv.setText(text);

   result.mNextView = v;

   result.mDuration = ration;

   return result;

}

可以看到makeText方法接受的context被用於

context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);

  這是用於獲取XML中定義的View的方法,可以看到通過外部傳入的Context,在這里獲得了一個View布局用於顯示Toast。

public Toast(Context context) {

   mContext = context;

   mTN = new TN();

   mTN.mY = context.getResources().getDimensionPixelSize(

   com.android.internal.R.dimen.toast_y_offset);

   mTN.mGravity = context.getResources().getInteger(

   com.android.internal.R.integer.config_toastDefaultGravity);

}

  這一行中可以看出在context又被用來獲取資源文件,可以看出Toast的顯示和布局都是通過context去調用系統寫好的資源文件來進行實現的。

三、Activity context和Application context的區別

  Activity的context和Application的context的區別在於生命周期的區別,Activity的context是依附在著Activity的生命周期的,而Application的Context的生命周期是依附在整個應用之上的。

Ⅵ android中怎樣獲取Context

直接傳你那個Activity的名字加上.this,比如你的activity叫MyActivity則在傳context參數的時候,參數寫MyActivity.this即可傳Context過去。

Ⅶ Android 如何 在任何地方獲取Context

MyApplication 是應用程序對象

是由android系統幫你實例化的,不能是static
private static MyApplication instance;

因為有可能你還沒有創建,你就去調用了它
如果是在android 四大組件,activity,service 廣播,內容提供者
都可以通過,getApplication() 來獲取這個Application對象

Ⅷ android 幾個路徑的獲取

String appPath = getApplicationContext().getPackageResourcePath();
/data/app/com.younghare.lepusService-2/base.apk

getApplicationContext().getFilesDir()

getApplicationContext().getFilesDir().getParent()
其實就是/data/data/包(這是沙盒其他app無法訪問)
String dataAppPath = getApplicationContext().getFilesDir().getParent();
new File(dataAppPath+"/databases/task.db").exists();//返回是true

抽象路徑名的絕對路徑名字元串
String appAbsolute = getApplicationContext().getFilesDir().getAbsolutePath()
/data/user/0/com.younghare.lepusService/files

獲取CachDir
getApplicationContext().getCacheDir()

通過Context.getExternalCacheDir()方法可以獲取到 SDCard/ android /data/你的應用包名/cache/目錄,一般存放臨時緩存數據

getApplicationContext().getExternalCacheDir()
/storage/emulated/0/Android/data/com.younghare.lepusService/cache

getExternalFilesDir(null)參數傳入的為null,這樣默認訪問的是files文件夾,我們可以指定子文件夾

熱點內容
安卓皇帝隱藏劇情在哪裡 發布:2025-03-17 13:18:53 瀏覽:506
新版安卓為什麼不兼容 發布:2025-03-17 13:18:49 瀏覽:482
s3哪個配置性價比高 發布:2025-03-17 13:06:09 瀏覽:319
氣體壓縮能量 發布:2025-03-17 13:00:16 瀏覽:78
壓縮油19 發布:2025-03-17 12:25:29 瀏覽:858
linux上網代理 發布:2025-03-17 12:23:56 瀏覽:361
c是高級語言嗎 發布:2025-03-17 12:16:31 瀏覽:525
python泛型 發布:2025-03-17 12:15:01 瀏覽:484
編程貓被盜 發布:2025-03-17 12:02:18 瀏覽:133
海關鎖密碼箱如何設置新密碼 發布:2025-03-17 11:53:50 瀏覽:562