有时候服务会被调用,有时它不会被调用

时间:2016-08-02 13:06:07

标签: android service

我有一个活动,它将一些数据(edittext和image)存储在数据库中。 服务在某个时间运行,有时它不会运行。我正在为imageview加上一些文本数据并将其传递给调用我的数据库类的服务。为什么每次调用服务都没有?

将数据传递给服务:

 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);

这是我的服务类:( TaskDatabaseClass这是我的db类)

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;

1 个答案:

答案 0 :(得分:1)

您的Service似乎正在进行一些数据库写操作。这似乎是多余的,因为Android服务不适合这些任务(而不是它们将是无用的)。如果你只需要生成一个新线程,那么你可以在一个新线程中调用相同的操作(就像在你的服务中一样)甚至是你的Activity,这样当前的设置会非常有效。

Service中执行此任务不仅会在Android系统上创建一个创建Service并维持其生命周期的开销,即使您需要担心通过意图进行的数据传输系统上的额外开销。

您可以在标题"什么是服务"标题下详细了解Serviceshere的使用情况。