我想从我的服务启动线程,以便操作不在android的主线程中运行

时间:2014-03-19 07:32:51

标签: java android android-service

我使用了以下代码及其工作原理,但想知道这是否真的是一种有效的方法呢?

public class BackgroundService extends Service 
{
    Runner runner;

    @Override
    public IBinder onBind(Intent arg0) {
          return null;
    }

    @Override
    public void onCreate() {
          super.onCreate();
          Toast.makeText(this,"Service created ...", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onDestroy() {
          super.onDestroy(); 
          Toast.makeText(this, "Service destroyed ...", Toast.LENGTH_LONG).show();
          //stopSelf();
    }

    @Override
    public int onStartCommand (Intent intent, int flags, int startId){

        try{
            Toast.makeText(this,"Service started ...", Toast.LENGTH_LONG).show();
            runner = new Runner();
            runner.start();

        }catch(Exception localException){}
        return START_REDELIVER_INTENT;
    }    
}

public class Runner extends Thread {

    @Override
    public void run(){
        try
        {
            //code to run actual task
        }catch(Exception localException){}
    }
}

1 个答案:

答案 0 :(得分:1)

这是如何在android中进行一些后台处理的方法之一。 还有一些像

正确的方法来做android中的async东西,取决于要做的工作。如果你经常做一些事情,那么就像你一样简单地创建服务。

如果你想运行更小的一次拍摄,你可以创建Handler或AsyncTask。

就像我说的那样取决于你想在后台做的工作。