Skip to content
This repository was archived by the owner on Dec 8, 2022. It is now read-only.

Commit fbdf29a

Browse files
committed
Merge pull request #651 from yulin2/dev
refine pr for #649
2 parents fcb9b0f + 9f39f77 commit fbdf29a

File tree

2 files changed

+100
-6
lines changed

2 files changed

+100
-6
lines changed

src/com/github/andlyticsproject/AppInfoActivity.java

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public class AppInfoActivity extends Activity implements
4545
private LinksListAdapter linksListAdapter;
4646

4747
private LoadLinksDb loadLinksDb;
48+
private LoadBitmap loadBitmap;
4849

4950
private AppInfo appInfo;
5051
private List<Link> links;
@@ -78,9 +79,16 @@ public void onCreate(Bundle savedInstanceState) {
7879
}
7980

8081
if (iconFilePath != null) {
81-
Bitmap bm = BitmapFactory.decodeFile(iconFilePath);
82-
BitmapDrawable icon = new BitmapDrawable(getResources(), bm);
83-
getActionBar().setIcon(icon);
82+
if (getLastNonConfigurationInstance() != null) {
83+
loadBitmap = (LoadBitmap) getLastNonConfigurationInstance();
84+
loadBitmap.attach(this);
85+
if (loadBitmap.bitmap != null) {
86+
setActionBarIcon(loadBitmap.bitmap);
87+
}
88+
} else {
89+
loadBitmap = new LoadBitmap(this);
90+
Utils.execute(loadBitmap, iconFilePath);
91+
}
8492
}
8593

8694
LayoutInflater layoutInflater = getLayoutInflater();
@@ -230,6 +238,11 @@ public ContentAdapter getDbAdapter() {
230238
public AndlyticsApp getAndlyticsApplication() {
231239
return (AndlyticsApp) getApplication();
232240
}
241+
242+
@Override
243+
public Object onRetainNonConfigurationInstance() {
244+
return loadBitmap == null ? null : loadBitmap.detach();
245+
}
233246

234247
private static class LoadLinksDb extends DetachableAsyncTask<Void, Void, Void, AppInfoActivity> {
235248

@@ -258,6 +271,39 @@ protected void onPostExecute(Void result) {
258271
}
259272

260273
}
274+
275+
private static class LoadBitmap extends DetachableAsyncTask<String, Void, Bitmap, AppInfoActivity> {
276+
277+
Bitmap bitmap;
278+
279+
LoadBitmap(AppInfoActivity activity) {
280+
super(activity);
281+
}
282+
283+
@Override
284+
protected Bitmap doInBackground(String... params) {
285+
if (activity == null) {
286+
return null;
287+
}
288+
Bitmap bm = BitmapFactory.decodeFile(params[0]);
289+
bitmap = bm;
290+
return bm;
291+
}
292+
293+
@Override
294+
protected void onPostExecute(Bitmap bm) {
295+
if (activity == null) {
296+
return;
297+
}
298+
299+
activity.setActionBarIcon(bm);
300+
}
301+
}
302+
303+
private void setActionBarIcon(Bitmap bm) {
304+
BitmapDrawable icon = new BitmapDrawable(getResources(), bm);
305+
getActionBar().setIcon(icon);
306+
}
261307

262308
private void getLinksFromDb() {
263309
appInfo = db.findAppByPackageName(packageName);

src/com/github/andlyticsproject/DetailsActivity.java

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public class DetailsActivity extends BaseActivity implements DetailedStatsActivi
4545

4646
private String appName;
4747
private boolean hasRevenue;
48+
49+
private LoadBitmap loadBitmap;
4850

4951
public static class TabListener<T extends StatsView<?>> implements ActionBar.TabListener {
5052

@@ -98,9 +100,16 @@ protected void onCreate(Bundle savedInstanceState) {
98100
ActionBar actionBar = getActionBar();
99101

100102
if (iconFilePath != null) {
101-
Bitmap bm = BitmapFactory.decodeFile(iconFilePath);
102-
BitmapDrawable icon = new BitmapDrawable(getResources(), bm);
103-
actionBar.setIcon(icon);
103+
if (getLastNonConfigurationInstance() != null) {
104+
loadBitmap = (LoadBitmap) getLastNonConfigurationInstance();
105+
loadBitmap.attach(this);
106+
if (loadBitmap.bitmap != null) {
107+
setActionBarIcon(loadBitmap.bitmap);
108+
}
109+
} else {
110+
loadBitmap = new LoadBitmap(this);
111+
Utils.execute(loadBitmap, iconFilePath);
112+
}
104113
}
105114

106115
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
@@ -305,5 +314,44 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
305314
}
306315
}
307316
}
317+
318+
@Override
319+
public Object onRetainNonConfigurationInstance() {
320+
return loadBitmap == null ? null : loadBitmap.detach();
321+
}
322+
323+
private static class LoadBitmap extends DetachableAsyncTask<String, Void, Bitmap, DetailsActivity> {
324+
325+
Bitmap bitmap;
326+
327+
LoadBitmap(DetailsActivity activity) {
328+
super(activity);
329+
}
330+
331+
@Override
332+
protected Bitmap doInBackground(String... params) {
333+
if (activity == null) {
334+
return null;
335+
}
336+
337+
Bitmap bm = BitmapFactory.decodeFile(params[0]);
338+
bitmap = bm;
339+
return bm;
340+
}
341+
342+
@Override
343+
protected void onPostExecute(Bitmap bm) {
344+
if (activity == null) {
345+
return;
346+
}
347+
348+
activity.setActionBarIcon(bm);
349+
}
350+
}
351+
352+
private void setActionBarIcon(Bitmap bm) {
353+
BitmapDrawable icon = new BitmapDrawable(getResources(), bm);
354+
getActionBar().setIcon(icon);
355+
}
308356

309357
}

0 commit comments

Comments
 (0)