异步任务中不同类中的崩溃运行方法

时间:2012-08-26 14:27:16

标签: android class android-asynctask sharedpreferences

当我从asynctask运行一个方法时,我的应用程序崩溃了。但我不确定为什么,错误日志也不是很精细,这使得更难找到问题。

它与上下文有关,任何人都可以找到我做错的事吗?

public class UpdateHelpers extends Activity{

public String UPDATE_TIMESTAMP; 

    //opgeslagen timestamp verkrijgen
    public int getLastUpdateTimeStamp(){
        System.out.println(" getLastUpdateTimestamp Methode" );
          SharedPreferences savedTimeStamp = getSharedPreferences(UPDATE_TIMESTAMP,  MODE_PRIVATE);
          Integer startvalue = 1343192400; // timestamp last file from assets: (25-07-2012)
           Integer timestamp = savedTimeStamp.getInt("timestamp", startvalue); //standaard value: datum laatste json uit assets (25-07-2012)
           System.out.println("return value: "+timestamp);
           return timestamp;
        }

Class更大,更有帮助的方法,但这已经不起作用了)

在异步任务中(在后台执行)

//check for updates
                    Integer ts = uh.getLastUpdateTimeStamp();
                    System.out.println("value of timestamp= "+ts);

其中uh在具有异步任务的类的onCreate中声明:

 public UpdateHelpers uh;
 uh = new UpdateHelpers();

我需要的是一个保存的时间戳,如果它不存在我下载文件时的时间戳(25 juli)。然后我可以检查是否有另一种方法的更新,但我的代码崩溃了。

我输入了一些system.out.printlns,所以你可以看到它出错的地方 这是我的崩溃日志:

08-26 16:14:54.932: I/System.out(12571):  getLastUpdateTimestamp Methode
08-26 16:14:54.932: W/dalvikvm(12571): threadid=8: thread exiting with uncaught exception (group=0x400259f8)
08-26 16:14:54.942: E/AndroidRuntime(12571): FATAL EXCEPTION: AsyncTask #1
08-26 16:14:54.942: E/AndroidRuntime(12571): java.lang.RuntimeException: An error occured while executing doInBackground()
08-26 16:14:54.942: E/AndroidRuntime(12571):    at android.os.AsyncTask$3.done(AsyncTask.java:200)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.lang.Thread.run(Thread.java:1102)
08-26 16:14:54.942: E/AndroidRuntime(12571): Caused by: java.lang.NullPointerException
08-26 16:14:54.942: E/AndroidRuntime(12571):    at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:146)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at com.hera.ontdekdelft.UpdateHelpers.getLastUpdateTimeStamp(UpdateHelpers.java:24)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at com.hera.ontdekdelft.StartUp$LoadData.doInBackground(StartUp.java:611)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at com.hera.ontdekdelft.StartUp$LoadData.doInBackground(StartUp.java:1)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at android.os.AsyncTask$2.call(AsyncTask.java:185)
08-26 16:14:54.942: E/AndroidRuntime(12571):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-26 16:14:54.942: E/AndroidRuntime(12571):    ... 4 more

有人有想法吗? 我没有把我的整个代码放进去,因为它很多。 谢谢!

1 个答案:

答案 0 :(得分:1)

您无法初始化如下所示的活动类。它需要由Android为您初始化

uh = new UpdateHelpers();

呃应该是你的活动。做这样的事情

uh = ActivityName.this