Android 为什么我的未绑定服务类是&x27;不行?
我试图使用Android 为什么我的未绑定服务类是&x27;不行?,android,android-service,Android,Android Service,我试图使用服务unbound在数据库上创建一个表来实现这一点。但我没有得到回应。服务启动,当我检查数据库时,没有它的痕迹! 我的班级取消绑定服务: public class MyUnboundService extends Service { HttpClient httpClient = null; @Override public void onCreate() { Log.d("MY_UNBOUNDSERVICE", "onCreate()");
服务unbound
在数据库上创建一个表来实现这一点。但我没有得到回应。服务
启动,当我检查数据库时,没有它的痕迹!
我的班级取消绑定服务
:
public class MyUnboundService extends Service {
HttpClient httpClient = null;
@Override
public void onCreate() {
Log.d("MY_UNBOUNDSERVICE", "onCreate()");
httpClient = new DefaultHttpClient();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Context context = this.getApplicationContext();
Toast.makeText(context, "Start service", Toast.LENGTH_SHORT).show();
Log.d("MY_UNBOUNDSERVICE", "onStartCommand(...)");
String create = "CREATE TABLE IF NOT EXISTS test(id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, " +
"name TEXT, forename TEXT)";
List<NameValuePair> nameValuePairs = new ArrayList<>(1);
nameValuePairs.add(new BasicNameValuePair("createTabell", create));
new AsyncTaskTabell(this).execute(new Pair<>(nameValuePairs, httpClient));
return Service.START_STICKY;
}
@Override
public void onDestroy() {
Log.d("MY_UNBOUNDSERVICE", "onDestroy(...)");
Context context = this.getApplicationContext();
Toast.makeText(context, "Stopper service", Toast.LENGTH_SHORT).show();
super.onDestroy();
}
}
我的代码有什么问题非常感谢您的帮助和建议,谢谢。
异步任务类:
public class AsyncTaskTabell extends AsyncTask<Pair<List<NameValuePair>, HttpClient>, Void, String> {
private Context context = null;
public AsyncTaskTabell(Context context) {
this.context = context;
}
@Override
protected String doInBackground(Pair<List<NameValuePair>, HttpClient>... params) {
Pair pair = params[0];
List<NameValuePair> urlParams = (List<NameValuePair>)pair.first;
HttpClient httpClient = (HttpClient)pair.second;
try {
String serverURL = MainActivity.address + MainActivity.stringCommands[MainActivity.SF_POS];
HttpPost httpPost = new HttpPost(serverURL);
httpPost.setEntity(new UrlEncodedFormEntity(urlParams));
HttpResponse response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
return EntityUtils.toString(response.getEntity());
}
return "Wrong: " + response.getStatusLine().getStatusCode() + " " + response.getStatusLine().getReasonPhrase();
} catch (ClientProtocolException e) {
return e.getMessage();
} catch (IOException e) {
return e.getMessage();
}
}
@Override
protected void onPostExecute(String result) {
Intent i = new Intent("pos").putExtra("theResult", result);
LocalBroadcastManager.getInstance(context).sendBroadcast(i);
}
}
公共类AsyncTaskTabell扩展了AsyncTask{
私有上下文=null;
公共AsyncTaskTabell(上下文){
this.context=上下文;
}
@凌驾
受保护字符串DOINBACKGRAND(对…参数){
Pair Pair=params[0];
List urlParams=(List)pair.first;
HttpClient HttpClient=(HttpClient)pair.second;
试一试{
String serverURL=MainActivity.address+MainActivity.stringCommands[MainActivity.SF_POS];
HttpPost HttpPost=新的HttpPost(服务器URL);
setEntity(新的UrlEncodedFormEntity(urlParams));
HttpResponse response=httpClient.execute(httpPost);
if(response.getStatusLine().getStatusCode()==200){
返回EntityUtils.toString(response.getEntity());
}
返回“错误:”+response.getStatusLine().getStatusCode()+“”+response.getStatusLine().GetReasonPhase();
}捕获(客户端协议例外e){
返回e.getMessage();
}捕获(IOE异常){
返回e.getMessage();
}
}
@凌驾
受保护的void onPostExecute(字符串结果){
意向i=新意向(“位置”).putExtra(“结果”),结果;
LocalBroadcastManager.getInstance(context).sendBroadcast(i);
}
}
您是否在AndroidManifest.xml
文件中注册了您的服务?
尝试在应用程序
元素中添加此行:
<service android:enabled="true"
android:name=".MyUnboundService"/>
在数据库中创建表时,没有显示任何代码。从字符串创建
,我使用AsyncTaskTabell
将参数发送到我的servlet
。这就是我想要做的:创建一个表!你看到你在onStartCommand()上登录的东西了吗?你是什么意思请解释清楚!onStartCommand()中有一个Log.d()语句。启动服务时,是否在logcat中看到输出?
<service android:enabled="true"
android:name=".MyUnboundService"/>