标签: android-context

Android Asyntask:对上下文使用弱引用以避免设备旋转屏幕

Apress Pro Android 4中,作者说过:

当设备旋转时,[...]当前正在运行的活动的上下文将不再有效.[...]一种方法是使用对活动的弱引用而不是硬引用[...]

但是作者只是建议这一点,并没有说明它是如何完成的.谁先做了这个,请举个例子.

java android weak-references android-context

33
推荐指数
1
解决办法
3万
查看次数

这个,getContext()和getActivity()有什么区别?

我对所有这些的用法非常困惑,我们应该在哪里使用它们.

android android-context android-activity

32
推荐指数
2
解决办法
2万
查看次数

将应用程序上下文转换为Android中的静态方法的最佳方法

我正在开发一个包含多个活动的Android应用程序.在其中我有一个类有几个静态方法.我希望能够从不同的活动中调用这些方法.我正在使用静态方法通过XmlResourceParser从xml文件加载数据.要创建XmlResourceParser,需要在Application Context上进行调用.所以我的问题是,将应用程序上下文引用到静态方法的最佳方法是什么?让每个Activity获取并传递它吗?以某种方式将它存储在全局变量中?

android android-context

31
推荐指数
1
解决办法
5万
查看次数

Android:为什么必须使用getBaseContext()而不是这个

this经常参考当前的背景.但是,在某些情况下,为什么我们必须使用getBaseContext()而不是this.(这意味着使用时this会发现错误).

这是我的例子:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);            
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?>arg0, View arg1, int arg2, long arg3){
       Toast.makeText(getBaseContext(),"SELECTED", Toast.LENGTH_SHORT).show(); //this line
    }
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,当我更改getBaseContext()this将收到错误.

请问谁可以帮我解释一下.

android this android-context

31
推荐指数
4
解决办法
7万
查看次数

Dagger 2注入Android Context

我正在使用Dagger 2并使其工作,但我现在需要访问Android应用程序上下文.

我不清楚如何注入和访问上下文.我试过这样做如下:

@Module
public class MainActivityModule {    
    private final Context context;

    MainActivityModule(Context context) {
        this.context = context;
    }

@Provides @Singleton
Context provideContext() {
    return context;
}
Run Code Online (Sandbox Code Playgroud)

但是,这会导致以下异常:

java.lang.RuntimeException:无法创建应用程序:java.lang.IllegalStateException:必须设置mainActivityModule

如果我检查Dagger生成的代码,则会在此处引发此异常:

public Graph build() {  
    if (mainActivityModule == null) {
        throw new IllegalStateException("mainActivityModule must be set");
    }
    return new DaggerGraph(this);
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是注入Context的正确方法 - 任何帮助将不胜感激.

android dependency-injection android-context dagger-2

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

Android:引用上下文和内存泄漏

我已经读过,Android应用程序中的一个错误和内存泄漏源是为了保持对Context的长期引用.

但是我不明白是否可以创建一个看起来像这样的类:

public class HelperClass {
    private Context context;

    public HelperClass(Context context) {
        this.context = context;
    }
    public void myHelperMethod() {
        // uses this.context
    }
}
Run Code Online (Sandbox Code Playgroud)

并从活动中调用它:

public class MyActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        HelperClass h = new HelperClass(this);
        h.myHelperMethod();
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

android android-context

29
推荐指数
2
解决办法
1万
查看次数

传递上下文作为DialogFragment的参数

可以将上下文变量传递给DialogFragment吗?

我在对话框中使用此代码来传递字符串:

public static ConfirmDialog newInstance( String f) {
    ConfirmDialog d = new ConfirmDialog();

    Bundle args = new Bundle();
    args.putString("FILE_NAME", f);
    d.setArguments(args);

    return d;
}
Run Code Online (Sandbox Code Playgroud)

但我找不到像putString这样的函数来传递上下文.有可能这样做吗?

android android-context android-dialogfragment

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

在没有上下文的情况下访问资源

我正在尝试将配置(例如URL/etc)放入资源文件夹中以供实用程序类使用.但是,我不想从各地的活动中传递Context.我希望能够通过路径名访问资源(似乎资产/是为此用途设计的),而不使用上下文来访问资源.

在这种特殊情况下,我希望单例在实例化时在配置中使用某些东西.在实例化期间,除了那一次之外,它不需要任何资源.因此,每次调用getInstance()时都必须传入一个Context,这将是一个完全的浪费.

此外,这特定于App的配置,不应存储在共享系统文件或类似的任何内容中.

java android android-context android-resources

27
推荐指数
2
解决办法
3万
查看次数

确定上下文是否为特定活动

我将Activity上下文传递给对话框,但该对话框对于其他活动是全局的,因此其他活动也可能创建该对话框.我的问题是如何确定Activity上下文是一个特定的Activity?

我正在传递ActivityContext,如下所示:

private Activity ActivityContext;

public MessageDialog(Activity context,int DialogStyle,int Dialog_Layout,String Msg) 
{
    super(context,DialogStyle,Dialog_Layout);
    this.ActivityContext = context;
    this.Msg = Msg;
}
Run Code Online (Sandbox Code Playgroud)

java android android-context android-activity

27
推荐指数
2
解决办法
1万
查看次数

如果上下文不是活动上下文而是应用程序上下文,如何启动Intent

我正在尝试从扩展BroadcastReceiver的类开始一个活动.

public void onReceive(Context context, Intent intent) {
Run Code Online (Sandbox Code Playgroud)

问题是参数上下文是Application上下文而不是Activity上下文.

有没有办法使用Application上下文启动intent?

android android-intent android-context

25
推荐指数
1
解决办法
2万
查看次数