首页 > 解决方案 > 线程离线时如何停止服务?

问题描述

我正在开发一个android应用程序,当它通过使用服务和广播接收器连接互联网时调用webservice是我的代码:

public class YourService extends IntentService {
private static String TAG = YourService.class.getSimpleName();
private MyThread mythread;
public boolean isRunning = false;
JSONArray SaveOrderDart,SaveOrderDetails,UpdateDart,updateOrderDetails;
private static String urlDartorder= Config.url+"SaveDartDetails";
private static String urlupdateOrderDetails= Config.url+"UpdateOrderDetails";
private static String urlSaveOrderDetails= Config.url+"SaveOrderDetails";
private static String urlDartupdate= Config.url+"UpdateDartDetails";
DartDatabase ddb;
OrderDatabase ord;

/**
 * Creates an IntentService.  Invoked by your subclass's constructor.
 *
 * @param name Used to name the worker thread, important only for debugging.
 */
public YourService(String name) {
    super(name);
}

@Override
public void onCreate() {
    super.onCreate();
    mythread=new MyThread();
}

public YourService()
{
    super("call webservice");
}

@Override
public IBinder onBind(Intent intent) {
    // TODO: Return the communication channel to the service.
    throw new UnsupportedOperationException("Not yet implemented");
}

@Override
protected void onHandleIntent(@Nullable Intent intent) {

    Bundle extras = intent.getExtras();
    boolean isNetworkConnected = extras.getBoolean("isNetworkConnected");
    // your code
    if(isNetworkConnected){
        if(!isRunning){
            mythread.start();

            isRunning = true;
        }
        Log.e("TAG", "Yes");


    }
    else {

        if (mythread != null) {

            isRunning = false;
            mythread.interrupt();


        }
        //mythread.stop();
    }


}

@Override
public void onDestroy() {
    super.onDestroy();
    if(!isRunning){
        mythread.start();

        isRunning = true;
    }
}

我的广播接收器

public class ConnectivityChangeReceiver extends BroadcastReceiver {

boolean mLastState =false;
@Override
public void onReceive(Context context, Intent intent) {

    // Explicitly specify that which service class will handle the intent.
    ComponentName comp = new ComponentName(context.getPackageName(),
            YourService.class.getName());

            //mLastState = true;
            intent.putExtra("isNetworkConnected", isConnected(context));
            context.startService((intent.setComponent(comp)));


}

public  boolean isConnected(Context context) {
    ConnectivityManager connectivityManager = ((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE));
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    return networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected();
}

}

我的目的是当互联网存在时我想调用 webservice not present 然后停止线程和服务但是通过这段代码我无法停止服务我不知道为什么请帮助我!
但我无法停止线程请帮助我!

标签: androidandroid-intentservice

解决方案


推荐阅读