あなたのような背景の仕事をしているため、あなたのサービスでHandlerThread
を使用することができます。
public class ServicewithHandlerThread extends Service {
private Looper mServiceLooper;
private ServiceHandler mServiceHandler;
private final class ServiceHandler extends Handler {
public ServiceHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
while (true) {
synchronized (this) {
try {
//YOUR BACKGROUND WORK HERE
} catch (Exception e) {
}
}
}
stopSelf(msg.arg1);
}
}
@Override
public void onCreate() {
// Start up the thread running the service.
HandlerThread thread = new HandlerThread("ServiceStartArguments",
Process.THREAD_PRIORITY_BACKGROUND);
thread.start();
// Get the HandlerThread's Looper and use it for our Handler
mServiceLooper = thread.getLooper();
mServiceHandler = new ServiceHandler(mServiceLooper);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Message msg = mServiceHandler.obtainMessage();
msg.arg1 = startId;
mServiceHandler.sendMessage(msg);
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
ハンドラは、Androidでスレッドを使用するための素晴らしい方法であり、そうするのも非常に簡単。あなたのメソッドについては、私はあなたのコード – waqaslam
を見ていないので、何も言いませんが、ハンドラを使用してスレッドを使用する必要がありますか?それは悲しいことです –
私は恐れを持っています...;)しかし、心配しないでください、私たちはいつもあなたを助けるためにここにいます:) – waqaslam