任何人都可以告诉我如何在应用关闭时停止服务。 在我的项目中,即使应用程序关闭,服务仍然在后台运行。我已经提供了我的参考资料。
建议请。
感谢您宝贵的时间!..
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startService(new Intent(this, MyService.class));
Calendar cal = Calendar.getInstance();
Intent intent = new Intent(this, MyService.class);
PendingIntent pintent = PendingIntent
.getService(this, 0, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// Start service every 20 seconds
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
10* 1000, pintent);
}
}
MyService.java
public class MyService extends Service {
String result_data = "";
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onCreate() {
// Toast.makeText(this, "The new Service was Created", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intent, int startId) {
// For time consuming an long tasks you can launch a new thread here...
Toast.makeText(this, " Service Started", Toast.LENGTH_LONG).show();
Authentication_Class task = new Authentication_Class();
task.execute();
}
@Override
public void onDestroy() {
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
public class Authentication_Class extends AsyncTask<Void, Void, Void>
{
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
}
@Override
protected Void doInBackground(Void... params)
{
// TODO Auto-generated method stub
try {
Call_service();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
private void Call_service() throws Exception{
// TODO Auto-generated method stub
System.setProperty("http.keepAlive", "false");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
String URL = "";
String METHOD_NAME = "";
String NAMESPACE = "";
String SOAPACTION = "";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
// Add parameters if available
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransportSE = new HttpTransportSE(URL,15000);
try {
httpTransportSE.call(SOAPACTION, envelope);
SoapPrimitive result = (SoapPrimitive)envelope.getResponse();
result_data = String.valueOf(result);
System.out.println(">>-- RESPONSE : " +result_data);
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
}
}
}
答案 0 :(得分:1)
在您完成上次活动的活动中的onDestroy()方法中使用此方法,如下所示:
@Override
protected void onDestroy() {
super.onDestroy();
AppLog.Log(TAG, "On destroy");
stopService(new Intent(getApplicationContext(), MyService .class));
}