سلام.
به هر حال چون از Activity خارج می شوید، باید از Service استفاده شود (تا عملیات متوقف نشود).
همچنین ما باید درصد پیشرفت عملیاتی که در سرویس (Service) اجرا می شود را بدانیم، بنابراین در Activity مورد نظر می توانیم از BroadcastReceiver استفاده کنیم که عدد مربوط به درصد پیشرفت را از Service دریافت کند و بر اساس آن، درصد مربوط به ProgressBar یا ProgressDialog را تغییر بدهد (به روزرسانی کند).
بنده یک کد را در ادامه ذکر می کنم، اما کد ناقص است و تنها برای این می باشد که کلیت موضوع را متوجه شوید و به دنبال مثال های مشابه آن (و کامل) در اینترنت جستجو کنید.
بخشی از کد Activity (ناقص است و تنها کلیات آن ذکر شده) :
بخشی از کد Service (ناقص است و تنها کلیات آن ذکر شده) :
بخشی از کدها و مواردی مثل ذکر Service در فایل AndroidManifest.xml و ... ذکر نشدند (بنابراین در اینترنت به دنبال مثال های کامل در این زمینه باشید که توضیحات کامل نیز داشته باشند).
به هر حال چون از 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 و ... ذکر نشدند (بنابراین در اینترنت به دنبال مثال های کامل در این زمینه باشید که توضیحات کامل نیز داشته باشند).
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.