标签: android-context

什么是Android上的"上下文"?

在Android编程中,究竟是什么Context类以及它用于什么?

我在开发者网站上看过它,但我无法理解它.

android android-context

1872
推荐指数
26
解决办法
65万
查看次数

在Android中获取"上下文"的静态方法?

有没有办法Context在静态方法中获取当前实例?

我正在寻找那种方式,因为我讨厌每次更改时保存"Context"实例.

android android-context

931
推荐指数
15
解决办法
65万
查看次数

Android布局文件中的"工具:上下文"是什么?

从最新的ADT版本开始,我注意到布局XML文件上的这个新属性,例如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" />
Run Code Online (Sandbox Code Playgroud)

什么是"工具:上下文"用于?

它怎么知道写在那里的活动的确切路径?它是否在清单中查看应用程序的包?

它仅限于扩展Context或仅扩展活动的类吗?它可用于ListView项目等吗?

xml android android-context android-layout android-tools-namespace

908
推荐指数
5
解决办法
23万
查看次数

使用getApplication()作为上下文抛出"无法添加窗口 - 令牌null不适用于应用程序"的对话框

我的Activity正在尝试创建一个AlertDialog,它需要一个Context作为参数.如果我使用,这可以按预期工作:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
Run Code Online (Sandbox Code Playgroud)

但是,我很谨慎地使用"this"作为上下文,因为当Activity被销毁并重新创建甚至在屏幕旋转之类的简单事件时,可能会发生内存泄漏.来自Android开发者博客上的相关帖子:

有两种简单的方法可以避免与上下文相关的内存泄漏.最明显的一个是避免在其自身范围之外逃避上下文.上面的例子显示了静态引用的情况,但内部类及其对外部类的隐式引用可能同样危险.第二种解决方案是使用Application上下文.只要您的应用程序处于活动状态并且不依赖于活动生命周期,此上下文就会存在.如果您计划保留需要上下文的长期对象,请记住应用程序对象.您可以通过调用Context.getApplicationContext()或Activity.getApplication()轻松获取它.

但是对于这AlertDialog()两者来说,getApplicationContext()或者getApplication()作为一个Context是可接受的,因为它抛出异常:

"无法添加窗口 - 令牌null不适用于应用程序"

每引用:1,2,3,等等.

那么,这真的应该被视为一个"错误",因为我们被正式建议使用Activity.getApplication(),但它没有宣传的功能吗?

吉姆

android builder android-context android-alertdialog

652
推荐指数
19
解决办法
36万
查看次数

在片段中使用上下文

如何在片段中获取上下文?

我需要用我的数据库其构造函数采用的背景下,但getApplicationContext()FragmentClass.this没有工作,所以我能做些什么?

数据库构造函数

public Database(Context ctx)
{
    this.context = ctx;
    DBHelper = new DatabaseHelper(context);
}
Run Code Online (Sandbox Code Playgroud)

java android android-context android-fragments

645
推荐指数
12
解决办法
46万
查看次数

getContext(),getApplicationContext(),getBaseContext()和"this"之间的区别

是什么区别getContext(),getApplicationContext(),getBaseContext(),和" this"?

虽然这是一个简单的问题,但我无法理解它们之间的基本区别.如果可能,请举出一些简单的例子.

android this android-context

535
推荐指数
5
解决办法
27万
查看次数

在各地使用应用程序

在Android应用中,以下方法有什么问题:

public class MyApp extends android.app.Application {

    private static MyApp instance;

    public MyApp() {
        instance = this;
    }

    public static Context getContext() {
        return instance;
    }

}
Run Code Online (Sandbox Code Playgroud)

并传递它到处(例如SQLiteOpenHelper)需要上下文(当然不泄漏)?

android android-context

468
推荐指数
6
解决办法
29万
查看次数

getApplication()与getApplicationContext()

我找不到令人满意的答案,所以我们在这里:有什么处理Activity/Service.getApplication()Context.getApplicationContext()

在我们的应用程序中,都返回相同的对象.ActivityTestCase然而,在一个getApplication()模拟应用程序将使用模拟getApplicationContext返回,但仍将返回一个不同的上下文实例(一个由Android注入).那是一个错误吗?这是故意的吗?

我甚至不了解首先的区别.测试套件外是否存在两个呼叫可能带有不同对象的情况?何时以及为何?此外,为什么getApplication定义上ActivityService,但不是Context?不应该随处可用的有效应用程序实例吗?

android android-service android-context android-activity

407
推荐指数
3
解决办法
30万
查看次数

获取上下文的各种方法之间有什么区别?

在我看过的各种Android代码中:

 public class MyActivity extends Activity {
    public void method() {
       mContext = this;    // since Activity extends Context
       mContext = getApplicationContext();
       mContext = getBaseContext();
    }
 }
Run Code Online (Sandbox Code Playgroud)

但是,我找不到任何合适的解释,哪些更好,以及在什么情况下应该使用.

关于这方面的文件的指示,以及关于如果选择了错误的可能会破坏的指导,将不胜感激.

android android-context

387
推荐指数
4
解决办法
9万
查看次数

从Activity上下文外部调用startActivity()

ListView在我的Android应用程序中实现了一个.我ListView使用类的自定义子类绑定到此ArrayAdapter.在重写ArrayAdapter.getView(...)方法中,我指定了一个OnClickListener.在onClick方法中OnClickListener,我想发布一个新活动.我得到了例外:

Calling startActivity() from outside of an Activity  context requires the  
FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得ContextListView(当前Activity)下工作?

android android-context android-activity

339
推荐指数
9
解决办法
22万
查看次数