Android Asyntask: Use weak reference for context to avoid device rotate screen

后端 未结 3 1515
-上瘾入骨i
-上瘾入骨i 2020-12-07 22:30

In Apress Pro Android 4 the author has said that:

[...] context of currently running activity will no longer be valid when the device is rot

相关标签:
3条回答
  • 2020-12-07 23:25

    If you want to restore the previous activity, why not go for onSaveInstanceState and restore it later on.

    Check this link for more details

    Saving application state

    0 讨论(0)
  • 2020-12-07 23:28

    Somewhere in your AsyncTask you'll want to pass in your activity. Then you'll save that reference in a weak reference. Then you can dereference and use it again in onPostExecute.

    Class member:

    WeakReference<Activity> weakActivity;
    

    Somewhere in AsyncTask, probably either constructor or onPreExecute:

    weakActivity = new WeakReference<Activity>(activity);
    

    In onPostExecute:

    Activity activity = weakActivity.get();
    if (activity != null) {
       // do your stuff with activity here
    }
    
    0 讨论(0)
  • 2020-12-07 23:32

    Here is an example of WeakReference to store a context;

    WeakReference<Context> cReference = new WeakReference<Context>(getApplicationContext());
    

    Now we can use this weakReference to do Activity/Context related work.

    0 讨论(0)
提交回复
热议问题