انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
به کار بردن BroadcastReceiver برای دریافت میزان پیشرفت عملیات از Service (اندروید)

به کار بردن BroadcastReceiver برای دریافت میزان پیشرفت عملیات از Service (اندروید)

#1
دوستان
من دوتا اکتیویتی دارم ک در اکتیویتی اول مقداری رو برای اکتیویتی دوم میفرستم و در اکتیویتی دوم progress bar دارم که از صفر تا 100 رو پیمایش میکنه!
و وقتی از اکتیویتی دوم خارج میشم(مثلا با بک زدن) و مجدد وارد اکتیویتی دوم میشم progress bar مقدار 0 رو نشون میده و ادامه پروسس قبلی رو طی نمیکنه!
چکار باید کنم؟
+ از سرویس هم استفاده کردم ولی نشد عناصرم رو تعریف کنم(شاید هم من بلد نبودم).راهش چیه ؟؟
کمک فوری لطفا
مرسی
پاسخ

به کار بردن BroadcastReceiver برای دریافت میزان پیشرفت عملیات از Service (اندروید)

#2
سلام.
به هر حال چون از 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(thisMyService.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 contextIntent 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 intentint 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 intentint flagsint startId) {
 
       //
 
   }


 
   @Override
    public IBinder onBind
(Intent intent) {
 
       return null;
 
   }




بخشی از کدها و مواردی مثل ذکر Service در فایل AndroidManifest.xml و ... ذکر نشدند (بنابراین در اینترنت به دنبال مثال های کامل در این زمینه باشید که توضیحات کامل نیز داشته باشند).

Flower
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

به کار بردن BroadcastReceiver برای دریافت میزان پیشرفت عملیات از Service (اندروید)

#3
مرسي از كمكتون
پاسخ
 سپاس شده توسط admin ، شماره مجازی امارات


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان