android - 线程离线时如何停止服务?
问题描述
我正在开发一个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 然后停止线程和服务但是通过这段代码我无法停止服务我不知道为什么请帮助我!
但我无法停止线程请帮助我!
解决方案
推荐阅读
- java - 将所有常量放在一个类android中
- html - Mouseup 和 mousedown 事件在 br 标签中不起作用
- c++ - C++ 初始化常量
- testing - LLVM 点燃测试:是否可以通过“lit.cfg”配置线程数?
- ruby-on-rails - 将 ActiveRecord 查询转换为 PostgreSQL 查询
- python - 删除 Python 对象而不先删除所有引用
- r - 使用过滤器/变异和 dplyr/tidyverse 逻辑对数据库进行分类
- xamarin.ios - 在 Xamarin.ios 中显示其他视图
- php - Laravel - “方法 Illuminate\\Database\\Query\\Builder::recipes 不存在
- c# - C# FTP with WebClient Error: The remote server returned an error: (534) 534 Policy requires SSL