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

refine pr for AndlyticsProject/andlytics#649 #651

Merged
merged 2 commits into from
Oct 21, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 49 additions & 3 deletions src/com/github/andlyticsproject/AppInfoActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ public class AppInfoActivity extends Activity implements
private LinksListAdapter linksListAdapter;

private LoadLinksDb loadLinksDb;
private LoadBitmap loadBitmap;

private AppInfo appInfo;
private List<Link> links;
Expand Down Expand Up @@ -78,9 +79,16 @@ public void onCreate(Bundle savedInstanceState) {
}

if (iconFilePath != null) {
Bitmap bm = BitmapFactory.decodeFile(iconFilePath);
BitmapDrawable icon = new BitmapDrawable(getResources(), bm);
getActionBar().setIcon(icon);
if (getLastNonConfigurationInstance() != null) {
loadBitmap = (LoadBitmap) getLastNonConfigurationInstance();
loadBitmap.attach(this);
if (loadBitmap.bitmap != null) {
setActionBarIcon(loadBitmap.bitmap);
}
} else {
loadBitmap = new LoadBitmap(this);
Utils.execute(loadBitmap, iconFilePath);
}
}

LayoutInflater layoutInflater = getLayoutInflater();
Expand Down Expand Up @@ -230,6 +238,11 @@ public ContentAdapter getDbAdapter() {
public AndlyticsApp getAndlyticsApplication() {
return (AndlyticsApp) getApplication();
}

@Override
public Object onRetainNonConfigurationInstance() {
return loadBitmap == null ? null : loadBitmap.detach();
}

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

Expand Down Expand Up @@ -258,6 +271,39 @@ protected void onPostExecute(Void result) {
}

}

private static class LoadBitmap extends DetachableAsyncTask<String, Void, Bitmap, AppInfoActivity> {

Bitmap bitmap;

LoadBitmap(AppInfoActivity activity) {
super(activity);
}

@Override
protected Bitmap doInBackground(String... params) {
if (activity == null) {
return null;
}
Bitmap bm = BitmapFactory.decodeFile(params[0]);
bitmap = bm;
return bm;
}

@Override
protected void onPostExecute(Bitmap bm) {
if (activity == null) {
return;
}

activity.setActionBarIcon(bm);
}
}

private void setActionBarIcon(Bitmap bm) {
BitmapDrawable icon = new BitmapDrawable(getResources(), bm);
getActionBar().setIcon(icon);
}

private void getLinksFromDb() {
appInfo = db.findAppByPackageName(packageName);
Expand Down
54 changes: 51 additions & 3 deletions src/com/github/andlyticsproject/DetailsActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ public class DetailsActivity extends BaseActivity implements DetailedStatsActivi

private String appName;
private boolean hasRevenue;

private LoadBitmap loadBitmap;

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

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

if (iconFilePath != null) {
Bitmap bm = BitmapFactory.decodeFile(iconFilePath);
BitmapDrawable icon = new BitmapDrawable(getResources(), bm);
actionBar.setIcon(icon);
if (getLastNonConfigurationInstance() != null) {
loadBitmap = (LoadBitmap) getLastNonConfigurationInstance();
loadBitmap.attach(this);
if (loadBitmap.bitmap != null) {
setActionBarIcon(loadBitmap.bitmap);
}
} else {
loadBitmap = new LoadBitmap(this);
Utils.execute(loadBitmap, iconFilePath);
}
}

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Expand Down Expand Up @@ -305,5 +314,44 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
}
}

@Override
public Object onRetainNonConfigurationInstance() {
return loadBitmap == null ? null : loadBitmap.detach();
}

private static class LoadBitmap extends DetachableAsyncTask<String, Void, Bitmap, DetailsActivity> {

Bitmap bitmap;

LoadBitmap(DetailsActivity activity) {
super(activity);
}

@Override
protected Bitmap doInBackground(String... params) {
if (activity == null) {
return null;
}

Bitmap bm = BitmapFactory.decodeFile(params[0]);
bitmap = bm;
return bm;
}

@Override
protected void onPostExecute(Bitmap bm) {
if (activity == null) {
return;
}

activity.setActionBarIcon(bm);
}
}

private void setActionBarIcon(Bitmap bm) {
BitmapDrawable icon = new BitmapDrawable(getResources(), bm);
getActionBar().setIcon(icon);
}

}