Android销毁活动是什么意思,android – 服务自动被要求销毁活动

我遇到了活动服务问题,因为我有以下几个活动和服务.

活动内容:

LoginActivity => OrderListActivity => AddOrderActivity => ConfirmOrderActivity

服务:

> ReceivingOrderService – 从服务器接收新数据

> SendingOrderService – 发送新的数据到服务器

以上两个服务在一段时间间隔内从另一个独立服务呼叫.

> CheckAutoSyncReceivingOrder – 调用ReceivingOrderService(Interval 15Mins)

> CheckAutoSyncSendingOrder – 调用SendingOrderService(间隔3Mins)

CheckAutoSyncReceivingOrder:

public class CheckAutoSyncReceivingOrder extends Service {

Timer timer;

@Override

public IBinder onBind(Intent arg0) {

// TODO Auto-generated method stub

return null;

}

@Override

public void onStart(Intent intent, int startId) {

// TODO Auto-generated method stub

if(timer != null) {

timer.cancel();

Log.i(TAG, "RECEIVING OLD TIMER CANCELLED>>>");

}

timer = new Timer();

timer.schedule(new TimerTask() {

@Override

public void run() {

if(InternetConnection.checkConnection(getApplicationContext())) {

if(getDatabasePath(DatabaseHelper.DATABASE_NAME).exists())

startService(new Intent(CheckAutoSyncReceivingOrder.this, ReceivingOrderService.class));

} else {

Log.d(TAG, "Connection not available");

}

}

}, 0, 60000); // 1000*60*15 = 9,00,000 = 15 minutes

}

@Override

public void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

if(timer != null)

timer.cancel();

Log.d(TAG, "Stopping Receiving...");

}

}

CheckAutoSyncSendingOrder:

public class CheckAutoSyncSendingOrder extends Service {

Timer timer;

@Override

public IBinder onBind(Intent arg0) {

// TODO Auto-generated method stub

return null;

}

@Override

public void onStart(Intent intent, int startId) {

// TODO Auto-generated method stub

if(timer != null) {

timer.cancel();

Log.i(TAG, "OLD TIMER CANCELLED>>>");

}

timer = new Timer();

timer.schedule(new TimerTask() {

@Override

public void run() {

Log.i(TAG, ">>>>>>>> SENDING AUTO SYNC SERVICE >>>>>>>>");

if(InternetConnection.checkConnection(getApplicationContext())) {

if(getDatabasePath(DatabaseHelper.DATABASE_NAME).exists())

startService(new Intent(CheckAutoSyncSendingOrder.this, SendingOrderService.class));

} else {

Log.d(TAG, "connection not available");

}

}

}, 0, 120000); // 1000*120*15 = 1,800,000 = 15 minutes

}

@Override

public void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

if(timer != null)

timer.cancel();

Log.d(TAG, "Stopping Sending...");

}

}

ConfirmOrderActivity#我要求的最终任务插入数据:

new AsyncTask() {

ProgressDialog progressDialog;

@Override

protected void onPreExecute() {

// TODO Auto-generated method stub

super.onPreExecute();

progressDialog = new ProgressDialog(

ConfirmOrderProductActivity.this);

progressDialog.setMessage("Inserting "

+ (isInquiry ? "Inquiry" : "Order") + "...");

progressDialog.setCancelable(false);

progressDialog

.setProgressStyle(ProgressDialog.STYLE_SPINNER);

progressDialog.show();

}

@Override

protected Integer doInBackground(Void... params) {

// TODO Auto-generated method stub

int account_id = context.getSharedPreferences(PREF_DATA,

MODE_APPEND).getInt(DATA_ACCOUNT_ID, 0);

/**

* Check Whether isInquiry or not...

*/

product_type = isWeight ? 1 : 0;

if (isInquiry) {

/*

* INSERTING DATA IN INQUIRY TABLE

*/

return m_inquiry_id;

} else {

/*

* INSERTING DATA IN ORDER TABLE

*/

return m_order_id;

}

}

@Override

protected void onPostExecute(Integer m_order_id) {

// TODO Auto-generated method stub

super.onPostExecute(m_order_id);

progressDialog.dismiss();

if (dbHelper.db.isOpen())

dbHelper.close();

String title = "Retry";

String message = "There is some problem, Go Back and Try Again";

AlertDialog.Builder alert = new AlertDialog.Builder(

ConfirmOrderProductActivity.this);

if (m_order_id != -1) {

title = isInquiry ? "New Inquiry" : "New Order";

message = isInquiry ? "Your Inquiry Send Successfully." : "Your Order Saved Successfully.";

alert.setIcon(R.drawable.success).setCancelable(false);

} else {

alert.setIcon(R.drawable.fail).setCancelable(false);

}

alert.setTitle(title).setMessage(message)

.setPositiveButton("OK", new OnClickListener() {

@Override

public void onClick(DialogInterface dialog,

int which) {

// TODO Auto-generated method stub

dialog.dismiss();

startActivity(new Intent(

ConfirmOrderProductActivity.this,

FragmentChangeActivity.class)

.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

/* Opening Left to Right Animation */

overridePendingTransition(R.anim.right_out,

R.anim.right_in);

}

});

AlertDialog alertDialog = alert.create();

alertDialog.show();

}

}.execute();

一切都按照在数据库中插入记录的流程正常工作.

添加查询后:

f5b8fe9a75aee5b405fc9c4f860bc3cd.png

销毁活动并获取以下Logcat:

c4262ea3c8d80b3722fcdf41f530c467.png

主要问题:

当我从ConfirmOrderActivity成功下订单时,显示“成功消息”的AlertDialog,该消息可以被取消.当我停止此活动的应用程序时,它自动调用CheckAutoSyncReceivingOrder和CheckAutoSyncSendingOrder.

编辑:

I am calling both Service from LoginActivity only, after that it

will called automatically after given intervals But Problem occurs

when I destroy ConfirmOrderActivity when dialog is shown.

我不知道为什么它会发生,为什么当我直接停止活动时,它会自动运行.

我已经尝试过onStartCommand()与START_NON_STICKY在服务,但不工作. (默认为START_STICKY.)

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

return START_NOT_STICKY;

}

有什么解决方案吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值