java-openFileOutput在单例类中不能正常工作-想法解决方法?

java-openFileOutput在单例类中不能正常工作-想法解决方法?,第1张

概述作为Android新手开发人员,我遇到了一个奇怪的问题.我想创建一个类,该类可以使用其他方法使用其他类-活动-以某种特殊方式处理文件.为了简单起见,我们将记录一些东西.如果我在某个活动中进行了跟踪(例如在OnClick侦听器中),则一切正常:FileOutputStreamfOut=openFileOutput("som

作为Android新手开发人员,我遇到了一个奇怪的问题.我想创建一个类,该类可以使用其他方法使用其他类-活动-以某种特殊方式处理文件.为了简单起见,我们将记录一些东西.如果我在某个活动中进行了跟踪(例如在OnClick侦听器中),则一切正常:

fileOutputStream fOut = openfileOutput("somefile", MODE_PRIVATE);OutputStreamWriter osw = new OutputStreamWriter(fOut);osw.write("Very important foobar");osw.flush();osw.close();

但是,当我尝试将其封装到某个类中并像这样创建单例时:

public class Logger extends BaseActivity {//BaseActivity is the "init" class which extends Activitypublic static final Logger INSTANCE = new Logger();private Logger() { // singleton}public boolean dolog (String whatTolog) { try {     fileOutputStream fOut = openfileOutput("somefile", MODE_PRIVATE); OutputStreamWriter osw = new OutputStreamWriter(fOut); osw.write(whatTolog); osw.flush(); osw.close(); }     catch (IOException ioe) { ioe.printstacktrace(); }       return true; }

并从其他活动中调用它

Logger.INSTANCE.dolog("foobar");  

NullPointerException(与openfileOutput一致)导致应用崩溃.我想是因为这里不恰当地使用单例/活动,现在重写了代码以作为服务运行.但是也许有一些更好的想法可以解决问题?还是一些解决方法?

感谢您的预先贡献!

解决方法:

您将单例基于未作为活动开始的活动.因此,它没有有效的上下文,这对于IO调用是必需的.请参阅Blundell的answer,以获得更好的单例,并进行以下更改:根据androID.app.Application javadoc,您的单例应通过Context.getApplicationContext()从给定上下文中获取应用程序上下文.另一个示例请参见why does AndroidTestCase.getContext().getApplicationContext() return null.

总结

以上是内存溢出为你收集整理的java-openFileOutput在单例类中不能正常工作-想法/解决方法?全部内容,希望文章能够帮你解决java-openFileOutput在单例类中不能正常工作-想法/解决方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1095281.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存