[Gen9 Android Development] mordesku:
Here is logcat for FC issue on your widget, also contains strange error

11-09 09:12:03.277: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.277: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.293: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.293: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.316: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.316: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.332: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.332: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.348: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.348: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.371: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.371: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.387: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.387: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.410: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.410: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.426: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.426: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.441: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.441: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.465: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.465: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.496: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:03.496: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:05.027: INFO/cat(611): <3>[57508.151611] init: No dynamic_args: Try to execve('/system/bin/watchdog_daemon'): args: �
11-09 09:12:05.027: ERROR/WatchdogDaemon(1270): ERROR opening temp sensor: No such file or directory
11-09 09:12:05.371: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:05.371: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:05.426: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:05.426: ERROR/TI OMAP PowerHAL(877): Error writing to /sys/devices/system/cpu/cpufreq/interactive/boostpulse: No such device
11-09 09:12:05.684: INFO/cat(611): <7>[57508.810607] select 31495 (llenauge.widget), adj 5, size 4076, to kill
11-09 09:12:05.684: INFO/cat(611): <7>[57508.810729] send sigkill to 31495 (llenauge.widget), adj 5, size 4076
11-09 09:12:05.684: INFO/ActivityManager(877): Process com.quallenauge.widget (pid 31495) has died.
11-09 09:12:05.691: WARN/ActivityManager(877): Scheduling restart of crashed service com.quallenauge.widget/com.quallenauge.service.ArchosControlService in 5000ms
11-09 09:12:08.410: INFO/GCoreUlr(1202): Successfully inserted location
11-09 09:12:08.418: INFO/GCoreUlr(1202): Not calling LocationReportingService, hasMoved: false, elapsed millis: 2223080, request: Tablet
11-09 09:12:10.035: ERROR/WatchdogDaemon(1275): ERROR opening temp sensor: No such file or directory
11-09 09:12:10.043: INFO/cat(611): <3>[57513.167633] init: No dynamic_args: Try to execve('/system/bin/watchdog_daemon'): args: �
11-09 09:12:10.699: INFO/ActivityManager(877): Start proc com.quallenauge.widget for service com.quallenauge.widget/com.quallenauge.service.ArchosControlService: pid=1278 uid=1000 gids={41000, 1015, 1028, 3002, 3001, 3003, 3007}
11-09 09:12:10.809: VERBOSE/ArchosControlService(1278): Service is started...0
11-09 09:12:10.824: VERBOSE/ArchosControlService(1278): 3G Port state <false>.
11-09 09:12:10.848: DEBUG/AndroidRuntime(1278): Shutting down VM
11-09 09:12:10.848: WARN/dalvikvm(1278): threadid=1: thread exiting with uncaught exception (group=0x418b9700)
11-09 09:12:10.856: ERROR/AndroidRuntime(1278): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start service com.quallenauge.service.ArchosControlService@41b3ce70 with null: java.lang.NullPointerException
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2849)
at android.app.ActivityThread.access$1900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5289)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.quallenauge.service.ArchosControlService.onStartCommand(ArchosControlService.java:47)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2832)
... 10 more
11-09 09:12:11.590: DEBUG/audio_hw_primary(627): Set output volume: 0.000000, gain -Inf
11-09 09:12:11.715: DEBUG/audio_hw_primary(627): Set output volume: 0.000000, gain -Inf
11-09 09:12:14.418: DEBUG/audio_hw_primary(627): Closing output
11-09 09:12:15.051: INFO/cat(611): <3>[57518.181427] init: No dynamic_args: Try to execve('/system/bin/watchdog_daemon'): args: �
11-09 09:12:15.051: ERROR/WatchdogDaemon(1296): ERROR opening temp sensor: No such file or directory
11-09 09:12:20.066: INFO/cat(611): <3>[57523.194335] init: No dynamic_args: Try to execve('/system/bin/watchdog_daemon'): args: �

I think that system is restarting the service without proper intent wich causes nullpointer in that line:

if (ArchosControlService.EXTRA_MODE_3G_PORT.equals( intent.getExtras().get(ArchosControlService.EXTRA_MODE))){

I have not much experience in Android development, has writen some little apps. Acording to http://developer.android.com/guide/components/services.html you should stop service using your method which starts service again when some values are changed. In my opinion it is bad solution. I think you should write service working in background and bind him to widget. When you bind service to widget you can call service methods directly from widget http://developer.android.com/guide/components/bound-services.html. And now comment for your code. I't is very hard to read and understand. Thera are some good practices writing code to keep it easy to read and easy to develop. First of all method should have one responsibility. I explain on example using Yours ArchosControlWidget class.

On update method is oversized. Before my refactor it's look like this:

public class ArchosControlWidget extends AppWidgetProvider {
private static final String TAG = "ArchosControlWidget";

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Log.v(TAG, "onUpdate...");
final int N = appWidgetIds.length;

ComponentName thisWidget = new ComponentName(context,ArchosControlWidget.class);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);

// Perform this loop procedure for each App Widget that belongs to this provider
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];

Log.v(TAG, "Install listeners for widget <"+appWidgetId+">...");

// Create an Intent to launch ExampleActivity
Intent intent = new Intent(context, ArchosControlService.class);
intent.putExtra(ArchosControlService.EXTRA_MODE, ArchosControlService.EXTRA_MODE_DEEP_SLEEP);
intent.putExtra(ArchosControlService.EXTRA_MODE_VALUE, false);
PendingIntent pendingIntent = PendingIntent.getService(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);

// Get the layout for the App Widget and attach an on-click listener to the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
views.setOnClickPendingIntent(R.id.btnDeepSleep, pendingIntent);

intent = new Intent(context, ArchosControlService.class);
intent.putExtra(ArchosControlService.EXTRA_MODE, ArchosControlService.EXTRA_MODE_3G_PORT);
intent.putExtra(ArchosControlService.EXTRA_MODE_VALUE, false);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, allWidgetIds);

pendingIntent = PendingIntent.getService(context, 2, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.btn3GPortSwitch, pendingIntent);

// Tell the AppWidgetManager to perform an update on the current App Widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}

Intent intent = new Intent(context, ArchosControlService.class);
intent.putExtra(ArchosControlService.EXTRA_MODE, ArchosControlService.EXTRA_MODE_UPDATE);
context.startService(intent);

}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
Log.v(TAG, "onReceive..."+intent.getAction()+"|"+intent.toString());
}
}

After my refactorisation it looks like this:

public class ArchosControlWidget extends AppWidgetProvider {
private static final String TAG = "ArchosControlWidget";

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Log.v(TAG, "onUpdate...");

ComponentName thisWidget = new ComponentName(context, ArchosControlWidget.class);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);

for (int appWidgetId : appWidgetIds) {
Log.v(TAG, "Install listeners for widget <"+appWidgetId+">...");
initDeepSleepButton(context, views);
init3gStickButton(context, allWidgetIds, views);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
startService(context);
}

private void startService(Context context) {
Intent intent = new Intent(context, ArchosControlService.class);
intent.putExtra(ArchosControlService.EXTRA_MODE, ArchosControlService.EXTRA_MODE_UPDATE);
context.startService(intent);
}

private void init3gStickButton(Context context, int[] allWidgetIds, RemoteViews views) {
Intent intent = createIntentFor(context, ArchosControlService.EXTRA_MODE_3G_PORT);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, allWidgetIds);
PendingIntent init3gStickIntent = PendingIntent.getService(context, 2, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.btn3GPortSwitch, init3gStickIntent);
}

private void initDeepSleepButton(Context context, RemoteViews views) {
PendingIntent deepSleepIntent = PendingIntent.getService(context, 1, createIntentFor(context, ArchosControlService.EXTRA_MODE_DEEP_SLEEP), PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.btnDeepSleep, deepSleepIntent);
}

private Intent createIntentFor(Context context, String serviceType) {
Intent intent = new Intent(context, ArchosControlService.class);
intent.putExtra(ArchosControlService.EXTRA_MODE, serviceType);
intent.putExtra(ArchosControlService.EXTRA_MODE_VALUE, false);
return intent;
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
Log.v(TAG, "onReceive..."+intent.getAction()+"|"+intent.toString());
}
}

As you can see it's easier to read, there's no need to comment the code. In my whole experience, bad code is hard to develop by third persons, and for developer after some time. I'm ready to help with developing the app/widget. So feel free to ask questions.