Ich habe eine Aktivität, die einige Daten (Edittext und Bild) in der Datenbank speichert. Dienst läuft irgendwann und manchmal nicht. Ich nehme das Bild für Bildansicht plus einige Textdaten und übergebe es an den Dienst, der meine Datenbankklasse aufruft. Warum wird der Service nicht jedes Mal aufgerufen?Manchmal wird der Service angerufen und manchmal nicht
Übergabe von Daten an Service:
imgView = (ImageView)findViewById(R.id.imageView2);
if(imgView.getDrawable()==null) {
imageData = null ;
}
else {
Bitmap bitmap = ((BitmapDrawable) imgView.getDrawable()).getBitmap();
imageData = getBytes(bitmap);
}
Intent i = new Intent(this,TaskService.class);
i.putExtra("heading",s);
i.putExtra("subject",s1);
i.putExtra("date",s2);
i.putExtra("notes",s3);
i.putExtra("imageData",imageData);
startService(i);
und dies ist meine Dienstklasse: (TaskDatabaseClass das ist meine db Klasse)
public class TaskService extends Service {
String s,s1,s2,s3;
byte[] imagedata;
public TaskService() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
s = intent.getStringExtra("heading");
s1 = intent.getStringExtra("subject");
s2 = intent.getStringExtra("date");
s3 = intent.getStringExtra("notes");
imagedata = intent.getByteArrayExtra("imageData");
Runnable r = new Runnable() {
@Override
public void run() {
try{
TaskDatabaseClass enterData = new TaskDatabaseClass(TaskService.this);
enterData.open();
enterData.createEntry(s,s1,s2,s3,imagedata);
enterData.close();
}catch(Exception e) {
}
}
};
Thread thread = new Thread(r);
thread.start();
this.stopSelf();
return 0;
}
@Override
public void onDestroy() {
Log.i(TAG ," destroying ");
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
// throw new UnsupportedOperationException("Not yet implemented");
return null;
Ich denke, es ist, weil Sie den Dienst stoppen - Wie Dokumentationen nur Einzelruf zu stoppen stoppt den gesamten Dienst – X3Btel
https://developer.android.com/guide/components/services.html können Sie versuchen, mit storself (startId); – X3Btel
@ X3Btel er kehrt 'START_STICKY_COMPATIBILITY' zurück. Also sollte 'stopSelf()' genug sein. – Shaishav