دوستان
من دوتا اکتیویتی دارم ک در اکتیویتی اول مقداری رو برای اکتیویتی دوم میفرستم و در اکتیویتی دوم progress bar دارم که از صفر تا 100 رو پیمایش میکنه!
و وقتی از اکتیویتی دوم خارج میشم(مثلا با بک زدن) و مجدد وارد اکتیویتی دوم میشم progress bar مقدار 0 رو نشون میده و ادامه پروسس قبلی رو طی نمیکنه!
چکار باید کنم؟
+ از سرویس هم استفاده کردم ولی نشد عناصرم رو تعریف کنم(شاید هم من بلد نبودم).راهش چیه ؟؟
کمک فوری لطفا
مرسی
سلام.
به هر حال چون از Activity خارج می شوید، باید از Service استفاده شود (تا عملیات متوقف نشود).
همچنین ما باید درصد پیشرفت عملیاتی که در سرویس (Service) اجرا می شود را بدانیم، بنابراین در Activity مورد نظر می توانیم از BroadcastReceiver استفاده کنیم که عدد مربوط به درصد پیشرفت را از Service دریافت کند و بر اساس آن، درصد مربوط به ProgressBar یا ProgressDialog را تغییر بدهد (به روزرسانی کند).
بنده یک کد را در ادامه ذکر می کنم، اما کد ناقص است و تنها برای این می باشد که کلیت موضوع را متوجه شوید و به دنبال مثال های مشابه آن (و کامل) در اینترنت جستجو کنید.
بخشی از کد Activity (ناقص است و تنها کلیات آن ذکر شده) :
کد پیاچپی:
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity);
intent = new Intent(this, MyService.class);
startService(intent);
// BroadcastReceiver to show download progress in ProgressDialog (get progress from service)
registerReceiver(broadcastReceiver, new IntentFilter(MyService.BROADCAST_ACTION));
// code for show ProgressDialog
}
// BroadcastReceiver to show download progress in ProgressDialog
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
updateUI(intent);
}
};
@Override
public void onResume() {
super.onResume();
//
}
@Override
public void onPause() {
super.onPause();
// unregisterReceiver(broadcastReceiver);
// stopService(intent);
}
private void updateUI(Intent intent) {
// get value from service
String ProgressPercentage = intent.getStringExtra("ProgressPercentage");
// code for change Progress Percentage in ProgressDialog
}
}
بخشی از کد Service (ناقص است و تنها کلیات آن ذکر شده) :
کد پیاچپی:
public class MyService extends Service {
public static final String BROADCAST_ACTION = "com.kelidestan.example.displayevent";
private final Handler handler = new Handler();
public Intent intent;
@Override
public void onCreate() {
super.onCreate();
intent = new Intent(BROADCAST_ACTION);
}
@Override
public void onStart(Intent intent, int startId) {
handler.removeCallbacks(sendUpdatesToUI);
handler.post(sendUpdatesToUI);
}
private Runnable sendUpdatesToUI = new Runnable() {
public void run() {
intent.putExtra("ProgressPercentage", String.valueOf(dl_progress));
sendBroadcast(intent);
handler.post(this);
}
};
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
بخشی از کدها و مواردی مثل ذکر Service در فایل AndroidManifest.xml و ... ذکر نشدند (بنابراین در اینترنت به دنبال مثال های کامل در این زمینه باشید که توضیحات کامل نیز داشته باشند).