我有响应于按钮按压在主活动获取数据的类。不幸的是,我一直运行到的问题,因为这个类不是一个活动或服务。例如,如果没有上下文我不能资源ID转换成的字符串:

getString(R.string.example_string); // Doesn't work

我应该使这个类转换为服务,并有主要活动停止的类时,它被关闭?我应该通过从活动语境到这个类这样?

MyClass c = new MyClass(this);

或者是有一些更好的方式来处理这个问题?

这个问题也来了,当我尝试从该类发送吐司。

更新:埃里希和雅努什指着我的AsyncTask类作品完美,但它创建了一个新的线程,并不会导致死亡线程的方向。这意味着过时间用户按下按钮,另一个线程,并将旧的只是坐在那里。

有帮助吗?

解决方案

如果你有一个后台操作的生命周期可以从您的活动分离,我会用一个Service。在这种情况下,Service将拥有自己的Context,所以你不会需要它传递。如果,但是,您需要在响应进行后台操作的UI事件(和可选发布结果反馈到用户界面线程),我会建议你使用AsyncTask

其他提示

我同意埃里希,如果你只有一个小东西像发布变更到Web后端或从手机内存装载东西给它在屏幕上使用的异步任务。如果任务将退出很“快”(几秒钟),你可以做一个匿名类的活动里。这将使你使用一个隐含的参考外活动里面的任务,你可以从那里得到你的背景。

如果任务运行了较长的时间,你可以传下去的上下文。如果您传递下来的背景下试试看能不能从活动中使用this.getApplicationContext(),这将减少对你的活动引用的数量,使垃圾收集收拾妥当通过这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top