相关疑难解决方法(0)

在各地使用应用程序

在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万
查看次数

何时调用活动上下文或应用程序上下文?

有很多关于这两种背景的帖子......但我仍然没有把它弄得恰到好处

据我所知到目前为止:每个都是它的类的一个实例,这意味着一些程序员建议你this.getApplicationContext()尽可能经常使用,以免"泄漏"任何内存.这是因为另一个this(获取Activity实例上下文)指向Activity每次用户倾斜手机或离开应用程序等时被销毁的内容.显然垃圾收集器(GC)没有捕获,因此使用太多内存..

但是,任何人都可以提出一些非常好的编码示例,它们是正确的使用this(获取当前Activity实例的上下文)并且应用程序上下文将是无用的/错误的吗?

android this android-context

259
推荐指数
5
解决办法
7万
查看次数

活动上下文与应用上下文的区别

这让我很难过,我在Android 2.1-r8 SDK中使用它:

ProgressDialog.show(getApplicationContext(), ....);
Run Code Online (Sandbox Code Playgroud)

还有

Toast t = Toast.makeText(getApplicationContext(),....);
Run Code Online (Sandbox Code Playgroud)

使用getApplicationContext()崩溃ProgressDialogToast....导致我这个问题:

尽管分享了"上下文"的措辞,但活动上下文和应用程序上下文之间的实际差异是什么?

android android-context

222
推荐指数
4
解决办法
11万
查看次数

Android:ProgressDialog.show()与getApplicationContext崩溃

我似乎无法理解为什么会这样.这段代码:

mProgressDialog = ProgressDialog.show(this, "", getString(R.string.loading), true);
Run Code Online (Sandbox Code Playgroud)

工作得很好.但是,这段代码:

mProgressDialog = ProgressDialog.show(getApplicationContext(), "", getString(R.string.loading), true);
Run Code Online (Sandbox Code Playgroud)

抛出以下异常:

W/WindowManager(  569): Attempted to add window with non-application token WindowToken{438bee58 token=null}.  Aborting.
D/AndroidRuntime( 2049): Shutting down VM
W/dalvikvm( 2049): threadid=3: thread exiting with uncaught exception (group=0x4001aa28)
E/AndroidRuntime( 2049): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime( 2049): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tastekid.TasteKid/com.tastekid.TasteKid.YouTube}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
E/AndroidRuntime( 2049):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
E/AndroidRuntime( 2049):    at …
Run Code Online (Sandbox Code Playgroud)

android progressdialog

108
推荐指数
6
解决办法
14万
查看次数

SharedPreferences应用程序上下文与活动上下文

我使用多个SharedPreferences在我的应用程序中存储数据.许多活动都使用了一些偏好.

我知道SharedPreferences在内部由地图支持,用于快速读取访问,并在设置更改时写入SD卡.

我想知道如果很多活动访问共享首选项哪种方式更好:

  1. 使用活动上下文在每个活动中实例化它.
  2. 在每个活动中实例化它,但使用应用程序上下文.
  3. 把它放在例如Application类中,只在那里实例化一次,类似于单例.

如果我使用1.解决方案是否有每个活动的共享首选项对象?当活动被销毁时,共享首选项的内部地图是否会被销毁?

如果我使用2.解决方案只有一个实例,虽然我在每个活动中调用getSharedPreferences?只要应用程序还活着,内部映射是否会在内存中?

希望有人知道Android如何在内部处理它.

android android-context sharedpreferences

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

使用应用程序上下文到底意味着什么?

我是新手,如果这是一个非常愚蠢的问题,我很抱歉.我只想澄清一些事情.我的书说我可以使用该getApplicationContext()方法检索进程的应用程序上下文.我真的不知道在哪里键入这个或如何处理它.我可以进入层次结构,但我如何处理那里的所有脚本.另外我还会在main.xml中编写Activity Callbacks?练习要我在项目中添加日志标记,但我不知道该怎么做.确切的文字说:

"在onCreate()回调方法中,使用Log.i()方法添加信息日志消息."

另一个练习说:

"除了onCreate()之外,还实现了一些Activity回调方法,例如onStart().向每个回调方法添加一条日志消息,然后正常运行应用程序".

由于这些似乎是基本问题,有人可以帮助我.

我正在使用Android SDK和Eclipse.我已经创建了Hello World应用程序,但我不知道如何处理Context或Retrieving资源.请帮忙!

eclipse resources android android-context

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