服务上的两个线程

时间:2015-05-28 11:56:54

标签: android multithreading service

我想在服务中运行两个线程。

我想在onCreate中只运行一次pThread

我想继续在onStartCommand中运行t-Thread。

如果两个线程独立运行,它可以正常工作。

但是当按照以下来源操作时,它工作不正确。

也许,t-thread似乎在pThread完成之前运行。

我希望在pThread完成后t-Thread正在运行。

源代码如下。

公共类BeaconService扩展了服务{

CentralManager centralManager;
private final String SERVER_ADDRESS = "http://xxx.xxx.xxx.xxx";
Handler handler;
XmlParser xmlGetter = new XmlParser();
Thread t;
Thread pThread;
String result = "d5756247-57a2-4344-915d-9599497940a7";
String text;
int count=0;
HashMap<String, Long> key = new HashMap<String, Long>();
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}
public void onCreate(){
    super.onCreate();

    setCentralManager();
    handler = new Handler(Looper.getMainLooper());
    t = new Thread(new Runnable() { 
        @Override
        public void run() {
            handler.post(new Runnable() {
                @Override
                public void run() {
                    centralManager.startScanning();
                }
            });
        }
    });

    pThread = new Thread(new Runnable() {
        @Override
        public void run() {
            try{                        

                URL url = new URL(SERVER_ADDRESS + "/Beacon_Infor.php?");
                Log.i("url","url : "+url);
                url.openStream();
                Log.i("stream","success");
            }catch(Exception e){
                Log.e("Error", "Error : " + e.getMessage());
            }
        }
    });
    pThread.start();
    Log.i("Service", "Start");

    Toast.makeText(this, "Service Start", Toast.LENGTH_SHORT).show();

    key=xmlGetter.getXmlHash("result.xml");
    Log.i("beacon hash", "hash : " + key);
}

public int onStartCommand(Intent intent, int flags, int startId){
    Log.i("onStartCommand", "Start");
    t.start();
    return START_STICKY;
}

public void onDestroy(){
    Toast.makeText(this, "Service End", Toast.LENGTH_SHORT).show();
    if(centralManager.isScanning()) {
        centralManager.stopScanning();
    }
    centralManager.close();
    super.onDestroy();
}

}

0 个答案:

没有答案