summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/drawable-hdpi/droidman_closed.pngbin9914 -> 7642 bytes
-rw-r--r--res/drawable-hdpi/droidman_down_closed.pngbin7319 -> 7580 bytes
-rw-r--r--res/drawable-hdpi/icon.pngbin6733 -> 4198 bytes
-rw-r--r--res/drawable-hdpi/trash.pngbin1882 -> 1462 bytes
-rw-r--r--res/drawable-mdpi/trash.pngbin1205 -> 1048 bytes
-rw-r--r--res/drawable/preview.pngbin0 -> 11105 bytes
-rw-r--r--res/xml/widget_build.xml1
-rw-r--r--src/com/android/protips/ProtipWidget.java41
8 files changed, 23 insertions, 19 deletions
diff --git a/res/drawable-hdpi/droidman_closed.png b/res/drawable-hdpi/droidman_closed.png
index 26ac62e..22997b1 100644
--- a/res/drawable-hdpi/droidman_closed.png
+++ b/res/drawable-hdpi/droidman_closed.png
Binary files differ
diff --git a/res/drawable-hdpi/droidman_down_closed.png b/res/drawable-hdpi/droidman_down_closed.png
index 81e22e1..d7d73be 100644
--- a/res/drawable-hdpi/droidman_down_closed.png
+++ b/res/drawable-hdpi/droidman_down_closed.png
Binary files differ
diff --git a/res/drawable-hdpi/icon.png b/res/drawable-hdpi/icon.png
index b98e31f..667f6b3 100644
--- a/res/drawable-hdpi/icon.png
+++ b/res/drawable-hdpi/icon.png
Binary files differ
diff --git a/res/drawable-hdpi/trash.png b/res/drawable-hdpi/trash.png
index e5deef6..b5d4055 100644
--- a/res/drawable-hdpi/trash.png
+++ b/res/drawable-hdpi/trash.png
Binary files differ
diff --git a/res/drawable-mdpi/trash.png b/res/drawable-mdpi/trash.png
index 5e423c4..7824cf2 100644
--- a/res/drawable-mdpi/trash.png
+++ b/res/drawable-mdpi/trash.png
Binary files differ
diff --git a/res/drawable/preview.png b/res/drawable/preview.png
new file mode 100644
index 0000000..312bea2
--- /dev/null
+++ b/res/drawable/preview.png
Binary files differ
diff --git a/res/xml/widget_build.xml b/res/xml/widget_build.xml
index c402aac..22303a7 100644
--- a/res/xml/widget_build.xml
+++ b/res/xml/widget_build.xml
@@ -18,4 +18,5 @@
android:minWidth="294dip"
android:minHeight="72dip"
android:updatePeriodMillis="0"
+ android:previewImage="@drawable/preview"
android:initialLayout="@layout/widget" />
diff --git a/src/com/android/protips/ProtipWidget.java b/src/com/android/protips/ProtipWidget.java
index ddc0b42..82d8ecf 100644
--- a/src/com/android/protips/ProtipWidget.java
+++ b/src/com/android/protips/ProtipWidget.java
@@ -16,36 +16,22 @@
package com.android.protips;
-import android.app.AlarmManager;
import android.app.PendingIntent;
-import android.app.Service;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
-import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.Intent;
import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.Message;
-import android.os.SystemClock;
-import android.text.format.Time;
-import android.text.Spannable;
import android.util.Log;
import android.view.View;
import android.widget.RemoteViews;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import java.util.Random;
/** Mister Widget appears on your home screen to provide helpful tips. */
public class ProtipWidget extends AppWidgetProvider {
@@ -58,11 +44,16 @@ public class ProtipWidget extends AppWidgetProvider {
public static final String PREFS_TIP_NUMBER = "widget_tip";
public static final String PREFS_TIP_SET = "widget_tip_set";
- private static Random sRNG = new Random();
-
private static final Pattern sNewlineRegex = Pattern.compile(" *\\n *");
private static final Pattern sDrawableRegex = Pattern.compile(" *@(drawable/[a-z0-9_]+) *");
+ private static Handler mAsyncHandler;
+ static {
+ HandlerThread thr = new HandlerThread("ProtipWidget async");
+ thr.start();
+ mAsyncHandler = new Handler(thr.getLooper());
+ }
+
// initial appearance: eyes closed, no bubble
private int mIconRes = R.drawable.droidman_open;
private int mMessage = 0;
@@ -111,7 +102,19 @@ public class ProtipWidget extends AppWidgetProvider {
}
@Override
- public void onReceive(Context context, Intent intent) {
+ public void onReceive(final Context context, final Intent intent) {
+ final PendingResult result = goAsync();
+ Runnable worker = new Runnable() {
+ @Override
+ public void run() {
+ onReceiveAsync(context, intent);
+ result.finish();
+ }
+ };
+ mAsyncHandler.post(worker);
+ }
+
+ void onReceiveAsync(Context context, Intent intent) {
setup(context);
Resources res = mContext.getResources();
@@ -121,7 +124,7 @@ public class ProtipWidget extends AppWidgetProvider {
mMessage = getNextMessageIndex();
SharedPreferences.Editor pref = context.getSharedPreferences(PREFS_NAME, 0).edit();
pref.putInt(PREFS_TIP_NUMBER, mMessage);
- pref.commit();
+ pref.apply();
refresh();
} else if (intent.getAction().equals(ACTION_POKE)) {
blink(intent.getIntExtra(EXTRA_TIMES, 1));
@@ -135,7 +138,7 @@ public class ProtipWidget extends AppWidgetProvider {
SharedPreferences.Editor pref = context.getSharedPreferences(PREFS_NAME, 0).edit();
pref.putInt(PREFS_TIP_NUMBER, mMessage);
pref.putInt(PREFS_TIP_SET, mTipSet);
- pref.commit();
+ pref.apply();
mContext.startActivity(
new Intent(Intent.ACTION_MAIN)