Hallo können Sie so freundlich sein, zu sehen, Snippets und sagen Sie mir, warum mein Dienst nicht nach dem Aufruf startService()
starten. Ich versuche ein Widget zu erstellen, das einen Dienst für alle Widgets auf dem Bildschirm ausführt. Dieser Service stellt eine Factory zum Ausfüllen einer Listenansicht bereit. Ich bin neu in Widgets, also wenn ich etwas falsch mache, warne mich bitte darüber.Warum läuft mein Widget nicht?
Dies ist die Widget-Provider-Klasse:
public class MyWidProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_list_view);
rv.setEmptyView(R.id.mywid_listview, R.id.empty_view);
appWidgetManager.updateAppWidget(appWidgetIds, rv);
Log.d("MyWidProvider", "start service <<<<<<<<<");
//here I am starting the service
Intent intent = new Intent(context, MyWidService.class);
context.startService(intent);
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
dies ist der Service:
public class MyWidService extends RemoteViewsService {
Realm realm;
@Override
public MyWidFactory onGetViewFactory(Intent intent) {
Log.d("MyWidService", " onGetViewFactory()<<<<<<<<<<");
Context context = getApplicationContext();
Realm.init(context);
realm = Realm.getDefaultInstance();
realm.isAutoRefresh();
populateRealm();
return new MyWidFactory(context, intent, realm);
}
private void populateRealm() {
realm.executeTransaction((t) ->{
final Task myTask = realm.createObject(Task.class);
myTask.setText("this is random widget Task");
final Task myTask2 = realm.createObject(Task.class);
myTask2.setText("this is my second widget task");
});
}
}
und dies ist die Fabrik:
class MyWidFactory implements RemoteViewsService.RemoteViewsFactory {
private Context mContext;
private RealmResults<Task> tasks;
private Realm realm;
MyWidFactory(Context context, Intent intent, Realm realm) {
mContext = context;
this.realm = realm;
}
// Initialize the data set.
public void onCreate() {
Log.d("MyWidFactory", "onCreate() <<<<<<<<");
tasks = realm.where(Task.class).findAll();
}
/*-------------------more methods-------------*/
}