当前位置:首页 » 安卓系统 » 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文件夹,我们可以指定子文件夹

热点内容
python中文发音 发布:2025-03-17 17:32:00 浏览:8
c语言程序编译运行慢 发布:2025-03-17 17:29:44 浏览:307
苹果手机锁屏密码怎么取消 发布:2025-03-17 17:29:44 浏览:665
解析语言和编译语言 发布:2025-03-17 17:29:07 浏览:796
什么台球游戏安卓和ios能一起玩 发布:2025-03-17 17:29:06 浏览:769
天阔服务器默认管理地址 发布:2025-03-17 17:23:46 浏览:447
安卓手机大图怎么浏览 发布:2025-03-17 17:09:11 浏览:983
电脑打开网页服务器没有响应 发布:2025-03-17 17:09:11 浏览:193
手柄编程 发布:2025-03-17 17:06:07 浏览:192
iphone重启缓存 发布:2025-03-17 16:57:56 浏览:634