开发者

How do I refresh data periodically in Android?

If I have used threads instead of an async task, then how do I refresh data periodically while navigating through activities? My data is read and parsed in the main activity.

  public class MainActivity extends Activity
  {
    //data_bedpres_future stores future data from current date
    public static ArrayList<ArrayList<String>> data_bedpres_future = new ArrayList<ArrayList<String>>();

//data_bedpres_past stores past data from current date
public static ArrayList<ArrayList<String>> data_bedpres_past = new ArrayList<ArrayList<String>>();

//data_nyheter_future stores future data from current date
public static ArrayList<ArrayList<String>> data_nyheter_future = new ArrayList<ArrayList<String>>();

//data_nyheter_past stores past data from current date
public static ArrayList<ArrayList<String>> data_nyheter_past = new ArrayList<ArrayList<String>>();

private Handler mHandler = new Handler();
private ArrayList<Date> mydate = new ArrayList<Date>();

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final ProgressBar progress_waiting1=(ProgressBar)findViewById(R.id.progress1);
    progress_waiting1.setVisibility(ProgressBar.VISIBLE);


    final ProgressBar progress_waiting2=(ProgressBar)findViewById(R.id.progress2);
    progress_waiting2.setVisibility(ProgressBar.VISIBLE);

    Typeface tf_helvetica = Typeface.createFromAsset(getAssets(),"fonts/HelveticaNw.ttf");
    Typeface tf_helvetica_bold = Typeface.createFromAsset(getAssets(),"fonts/HelveticaNwBd.ttf");

    Config.TF_HELVETICA=tf_helvetica;
    Config.TF_HELVETICA_BOLD=tf_helvetica_bold;



    final ImageButton bttn_bedpress=(ImageButton)findViewById(R.id.bttn_bedpress);
    ImageButton bttn_news=(ImageButton)findViewById(R.id.bttn_news);
    ImageButton bttn_logo=(ImageButton)findViewById(R.id.bttn_logo);
    ImageButton bttn_faq=(ImageButton)findViewById(R.id.bttn_faq);
    ImageButton bttn_cv=(ImageButton)findViewById(R.id.bttn_cv);
    ImageButton bttn_omnu=(ImageButton)findViewById(R.id.bttn_omnu);

    ImageButton bttn_recent=(ImageButton)findViewById(R.id.button1);

    final RelativeLayout img_gray_bg=(RelativeLayout)findViewById(R.id.img_gray_bg);
    img_gray_bg.setVisibility(ImageView.VISIBLE);

    final TextView txt_wait=(TextView)findViewById(R.id.txt_wait);
    txt_wait.setVisibility(TextView.VISIBLE);

    final TextView topheading=(TextView)findViewById(R.id.txt_topheading);
        topheading.setTypeface(Config.TF_HELVETICA_BOLD);
    final TextView headline=(TextView)findViewById(R.id.txt_headline);
        headline.setTypeface(Config.TF_HELVETICA_BOLD);
    final TextView date=(TextView)findViewById(R.id.txt_date);
        date.setTypeface(Config.TF_HELVETICA_BOLD);
    final TextView txt_place=(TextView)findViewById(R.id.txt_place);
        txt_place.setTypeface(Config.TF_HELVETICA_BOLD);
    final ImageView img_company=(ImageView)findViewById(R.id.img_company);

    final TextView txt_news=(TextView)findViewById(R.id.txt_news);
        txt_news.setTypeface(Config.TF_HELVETICA_BOLD);
    final TextView txt_career=(TextView)findViewById(R.id.txt_career);
        txt_career.setTypeface(Config.TF_HELVETICA_BOLD);
    final TextView txt_bedpress=(TextView)findViewById(R.id.txt_bedpress);
        txt_bedpress.setTypeface(Config.TF_HELVETICA_BOLD);

    final TextView txt_cv=(TextView)findViewById(R.id.txt_cv);
        txt_cv.setTypeface(Config.TF_HELVETICA_BOLD);
    final TextView txt_faq=(TextView)findViewById(R.id.txt_faq);
        txt_faq.setTypeface(Config.TF_HELVETICA_BOLD);
    final TextView txt_logo=(TextView)findViewById(R.id.txt_logo);
        txt_logo.setTypeface(Config.TF_HELVETICA_BOLD);

    if(!HaveNetworkConnection())
    {
        Log.v("no network","no network");
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Nettverk ikke tilgjengelig")
               .setCance开发者_JAVA百科lable(false)
               .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) 
                   {
                       dialog.cancel(); 
                   }
               });

        AlertDialog alert = builder.create();
        alert.show();
    }

    final Thread parseThread=new Thread(new Runnable() {

        public void run()
        {
            if(HaveNetworkConnection())
            {
                parseDataBedPres(Config.URL_BedPres);
                parseDataNyheter(Config.URL_Nyheter);
                Collections.sort(mydate);

            }
            else
            {
                Log.v("net not connected","net not connected");
                parseDataBedPresLocal();
                parseDataNyheterLocal();
                /*
                Looper.prepare();
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setMessage("Nettverk ikke tilgjengelig")
                       .setCancelable(false)
                       .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int id) 
                           {
                               dialog.cancel(); 
                           }
                       });

                AlertDialog alert = builder.create();
                alert.show();*/
            }
        }
    });
    parseThread.start();

    Thread displayThread = new Thread(new Runnable() {
        public void run() {

         try
         {
             parseThread.join();
         }
         catch (InterruptedException e) 
         {
            e.printStackTrace();
         }  
         mHandler.post(new Runnable() { 
            public void run() 
            {
                // TODO Auto-generated method stub
                progress_waiting1.setVisibility(ProgressBar.GONE);
                progress_waiting2.setVisibility(ProgressBar.GONE);
                txt_wait.setVisibility(TextView.GONE);
                img_gray_bg.setVisibility(ImageView.GONE);

                String month[]=getResources().getStringArray(R.array.month_array);

                if(data_bedpres_future.size()!=0)
                {
                    DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
                    Date dt = null;
                    Calendar cal = Calendar.getInstance();
                    try
                    {
                        dt = df.parse(data_bedpres_future.get(1).get(0));
                        cal.setTime(dt);
                    }
                    catch (ParseException e1) 
                    {
                        e1.printStackTrace();
                    }

                    DateFormat df2=new SimpleDateFormat("hh:mm:ss");
                    Date dt2 = null;
                    Calendar cal2 = Calendar.getInstance();
                    try
                    {
                        dt2 = df2.parse(data_bedpres_future.get(2).get(0));
                        cal2.setTime(dt2);
                    }
                    catch (ParseException e1) 
                    {
                        e1.printStackTrace();
                    }



                    date.setText("Tid: "+cal.get(Calendar.DATE)+" "+month[cal.get(Calendar.MONTH)]+" kl "+cal2.get(Calendar.HOUR_OF_DAY)+":"+cal2.get(Calendar.MINUTE));

                    //date.setText("Tid : "+data_bedpres_future.get(1).get(0));
                    headline.setText("Neste Bed.pres: "+data_bedpres_future.get(0).get(0));
                    txt_place.setText("Sted: "+data_bedpres_future.get(3).get(0));
                    try 
                    {

                            Drawable img = drawable_from_url(data_bedpres_future.get(4).get(0),"icon");
                            if(img!=null)
                            {
                                int height,width,w;
                                height = img.getMinimumHeight() > 52 ? 52 :img.getMinimumHeight();
                                int ratio =  (((img.getMinimumHeight() - height)*100)/img.getMinimumHeight());
                                int wi    = (img.getMinimumWidth() * ratio) /100;
                                width = img.getMinimumWidth() -wi;
                                w=width;
                                int width1 = width > 211 ? 211 :width;
                                if (width>0) 
                                {
                                    ratio =  (((width - width1)*100)/width);
                                    int hi    = (height * ratio) /100;
                                    height = height -hi;
                                    w=width1;
                                }

                                ViewGroup.LayoutParams params = img_company.getLayoutParams();
                                params.height = height;
                                params.width = w;
                                img_company.setLayoutParams(params);
                                img_company.setBackgroundDrawable(drawable_from_url(data_bedpres_future.get(4).get(0),"icon"));
                            }

                    } catch (MalformedURLException e) 
                    {
                        e.printStackTrace();
                    } catch (IOException e) 
                    {
                        e.printStackTrace();
                    }
                }
                else if(data_nyheter_future.size()!=0)
                {
                    date.setText(data_nyheter_future.get(2).get(0));
                    headline.setText("Siste nyhet: "+data_nyheter_future.get(3).get(0));    


                    try 
                    {
                        Drawable img = drawable_from_url(data_nyheter_future.get(0).get(0),"icon");
                        if(img!=null)
                        {
                            int height,width,w;
                            height = img.getMinimumHeight() > 52 ? 52 :img.getMinimumHeight();
                            int ratio =  (((img.getMinimumHeight() - height)*100)/img.getMinimumHeight());
                            int wi    = (img.getMinimumWidth() * ratio) /100;
                            width = img.getMinimumWidth() -wi;
                            w=width;
                            int width1 = width > 211 ? 211 :width;
                            if (width>0) 
                            {
                                ratio =  (((width - width1)*100)/width);
                                int hi    = (height * ratio) /100;
                                height = height -hi;
                                w=width1;
                            }

                            ViewGroup.LayoutParams params = img_company.getLayoutParams();
                            params.height = height;
                            params.width = w;
                            img_company.setLayoutParams(params);
                        img_company.setBackgroundDrawable(img);
                    } 
                    }catch (MalformedURLException e) 
                    {
                        e.printStackTrace();
                    } catch (IOException e) 
                    {
                        e.printStackTrace();
                    }
                }
                else if(data_nyheter_past.size()!=0)
                {
                    DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
                    Date dt = null;
                    Calendar cal = Calendar.getInstance();
                    try
                    {
                        dt = df.parse(data_nyheter_past.get(2).get(0));
                        cal.setTime(dt);
                    }
                    catch (ParseException e1) 
                    {
                        e1.printStackTrace();
                    }
                    date.setText(""+cal.get(Calendar.YEAR)+"-"+month[cal.get(Calendar.MONTH)]+"-"+cal.get(Calendar.DATE));
                    headline.setText("Siste nyhet: "+data_nyheter_past.get(3).get(0));  

                    try 
                    {
                        Drawable img = drawable_from_url(data_nyheter_past.get(0).get(0),"icon");
                        if(img!=null)
                        {
                            int height,width,w;
                            height = img.getMinimumHeight() > 52 ? 52 :img.getMinimumHeight();
                            int ratio =  (((img.getMinimumHeight() - height)*100)/img.getMinimumHeight());
                            int wi    = (img.getMinimumWidth() * ratio) /100;
                            width = img.getMinimumWidth() -wi;
                            w=width;
                            int width1 = width > 211 ? 211 :width;
                            if (width>0) 
                            {
                                ratio =  (((width - width1)*100)/width);
                                int hi    = (height * ratio) /100;
                                height = height -hi;
                                w=width1;
                            }

                            ViewGroup.LayoutParams params = img_company.getLayoutParams();
                            params.height = height;
                            params.width = w;
                            img_company.setLayoutParams(params);
                        img_company.setBackgroundDrawable(img);
                    }
                    }
                    catch (MalformedURLException e) 
                    {
                        e.printStackTrace();
                    } catch (IOException e) 
                    {
                        e.printStackTrace();
                    }
                }
            }
        });

        }
    });
    displayThread.start();  

    bttn_bedpress.setOnClickListener(new OnClickListener() {

        public void onClick(View v) 
        {
            //bttn_bedpress.setBackgroundDrawable(getResources().getDrawable(R.drawable.bedpres_pressed));
            if(data_bedpres_future.size()!=0)
            {
                Log.v("size of future data","size="+data_bedpres_future.size());
                startActivity(new Intent("com.vyam.BusinessPresentations"));
            }
            else
            {
                startActivity(new Intent("com.vyam.BusinessPresentationsPast"));
            }
        }
    });

    bttn_news.setOnClickListener(new OnClickListener() {

        public void onClick(View v) 
        {
            if(data_nyheter_future.size()!=0)
            {
                Log.v("size of future data","size="+data_nyheter_future.size());
                startActivity(new Intent("com.vyam.FutureNews"));
            }
            else
            {
                startActivity(new Intent("com.vyam.PastNews"));
            }
        }
    });

    bttn_logo.setOnClickListener(new OnClickListener() {

        public void onClick(View v) 
        {
            startActivity(new Intent("com.vyam.CareerFair"));
        }
    });

    bttn_faq.setOnClickListener(new OnClickListener() {

        public void onClick(View v) 
        {
            startActivity(new Intent("com.vyam.FAQ"));
        }
    });

    bttn_cv.setOnClickListener(new OnClickListener() {

        public void onClick(View v) 
        {
            startActivity(new Intent("com.vyam.CV"));
        }
    });

    bttn_omnu.setOnClickListener(new OnClickListener() {

        public void onClick(View v) 
        {
            startActivity(new Intent("com.vyam.OmNU"));
        }
    });



    bttn_recent.setOnClickListener(new OnClickListener() {

        public void onClick(View v) 
        {
            Intent intent=new Intent("com.vyam.NewsDetail");
            intent.putExtra("type","past");//it sends information that data must be shown from data_bedpres_past
            intent.putExtra("position",0);
            startActivity(intent);
        }
    });

}

/**
 * the parseDataBedPres(String url)method does JSON parsing of  the url Config.URL_BedPres
 * @return void
 */ 

public void parseDataBedPres(String url)
{
    ArrayList<String> company_names_future = new ArrayList<String>();
    ArrayList<String> company_names_past = new ArrayList<String>();

    ArrayList<String> date_future = new ArrayList<String>();
    ArrayList<String> date_past = new ArrayList<String>();

    ArrayList<String> place_future = new ArrayList<String>();
    ArrayList<String> place_past = new ArrayList<String>();

    ArrayList<String> meeting_time_future = new ArrayList<String>();
    ArrayList<String> meeting_time_past = new ArrayList<String>();

    ArrayList<String> company_logo_future = new ArrayList<String>();
    ArrayList<String> company_logo_past = new ArrayList<String>();

    ArrayList<String> description_future = new ArrayList<String>();
    ArrayList<String> description_past = new ArrayList<String>();

    ArrayList<String> url_future = new ArrayList<String>();
    ArrayList<String> url_past = new ArrayList<String>();

    ArrayList<String> fb_id_future = new ArrayList<String>();
    ArrayList<String> fb_id_past = new ArrayList<String>();

    FileOutputStream fos=null;
    try {
        URL business_url = new URL(url);
        URLConnection tc = business_url.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(tc.getInputStream()));


        StringBuffer fileData=new StringBuffer();

        String line;
        while ((line = in.readLine()) != null)
        {
            JSONArray ja = new JSONArray(line);
            Log.v("line"," "+line);

            fileData.append(line);

            for (int i = 0; i < ja.length(); i++) 
            {
                JSONObject jo = (JSONObject) ja.get(i);
                try
                {
                    Date today = new Date();
                    DateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm");
                    //Date date = df.parse(jo.getString("meeting_date"));
                    StringBuilder s1 = new StringBuilder(jo.getString("meeting_date"));
                      s1.append(" ");
                      s1.append(jo.getString("meeting_time"));
                      Date date = df.parse(s1.toString());

                    if(today.after(date))
                    {
                        if(jo.getString("company_name")!=null)
                            company_names_past.add(jo.getString("company_name"));
                        else
                            company_names_past.add(" ");
                        if(jo.getString("meeting_date")!=null)
                            date_past.add(jo.getString("meeting_date"));
                        else
                            date_past.add(jo.getString(" "));
                        if(jo.getString("meeting_address")!=null)
                            place_past.add(jo.getString("meeting_address"));
                        else
                            place_past.add(" ");
                        if(jo.getString("meeting_time")!=null)
                            meeting_time_past.add(jo.getString("meeting_time"));
                        else
                            meeting_time_past.add(jo.getString(" "));
                        if(jo.getString("company_logo")!=null)
                            company_logo_past.add(jo.getString("company_logo"));
                        else
                            company_logo_past.add(jo.getString(" "));
                        if(jo.getString("description")!=null)
                            description_past.add(jo.getString("description"));
                        else
                            description_past.add(jo.getString(" "));
                        if(jo.getString("company_url")!=null)
                            url_past.add(jo.getString("company_url"));
                        else
                            url_past.add(jo.getString(" "));
                        if(jo.getString("fb_event_id")!=null)
                            fb_id_past.add(jo.getString("fb_event_id"));
                        else
                            fb_id_past.add(jo.getString(" "));
                    }
                    else
                    {

                        if(jo.getString("company_name")!=null)
                            company_names_future.add(jo.getString("company_name"));
                        else
                            company_names_future.add(" ");
                        if(jo.getString("meeting_date")!=null)
                            date_future.add(jo.getString("meeting_date"));
                        else
                            date_future.add(jo.getString(" "));
                        if(jo.getString("meeting_address")!=null)
                            place_future.add(jo.getString("meeting_address"));
                        else
                            place_past.add(" ");
                        if(jo.getString("meeting_time")!=null)
                            meeting_time_future.add(jo.getString("meeting_time"));
                        else
                            meeting_time_future.add(jo.getString(" "));
                        if(jo.getString("company_logo")!=null)
                            company_logo_future.add(jo.getString("company_logo"));
                        else
                            company_logo_future.add(jo.getString(" "));
                        if(jo.getString("description")!=null)
                            description_future.add(jo.getString("description"));
                        else
                            description_future.add(jo.getString(" "));
                        if(jo.getString("company_url")!=null)
                            url_future.add(jo.getString("company_url"));
                        else
                            url_future.add(jo.getString(" "));
                        if(jo.getString("fb_event_id")!=null)
                            fb_id_future.add(jo.getString("fb_event_id"));
                        else
                            fb_id_future.add(jo.getString(" "));

                    }
                }
                catch (ParseException e)
                {
                      e.printStackTrace();
                }

            }
        }

        writeInternalStoragePrivate("BedPres",fileData.toString().getBytes());
    } 
    catch (MalformedURLException e) 
    {
        e.printStackTrace();
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    } 
    catch (JSONException e) 
    {
        e.printStackTrace();
    }



    if(company_names_future.size()!=0)
    {
        data_bedpres_future.add(company_names_future);
        data_bedpres_future.add(date_future);
        data_bedpres_future.add(meeting_time_future);
        data_bedpres_future.add(place_future);
        data_bedpres_future.add(company_logo_future);
        data_bedpres_future.add(description_future);
        data_bedpres_future.add(url_future);
        data_bedpres_future.add(fb_id_future);
    }
    if(company_names_past.size()!=0)
    {
        data_bedpres_past.add(company_names_past);
        data_bedpres_past.add(date_past);
        data_bedpres_past.add(meeting_time_past);
        data_bedpres_past.add(place_past);
        data_bedpres_past.add(company_logo_past);
        data_bedpres_past.add(description_past);
        data_bedpres_past.add(url_past);
        data_bedpres_past.add(fb_id_past);
    }

    Log.v("hello files----"," "+getFilesDir().getPath());

}


/**
 * This parses the url for Nyheter
 * @param url
 * @return 
 */
public void parseDataNyheter(String url)
{
    ArrayList<ArrayList<String>> data=new ArrayList<ArrayList<String>>();
    ArrayList<String> image1_future = new ArrayList<String>();
    ArrayList<String> image1_past = new ArrayList<String>();

    ArrayList<String> image2_future = new ArrayList<String>();
    ArrayList<String> image2_past = new ArrayList<String>();

    ArrayList<String> date_future = new ArrayList<String>();
    ArrayList<String> date_past = new ArrayList<String>();

    ArrayList<String> headline_future = new ArrayList<String>();
    ArrayList<String> headline_past = new ArrayList<String>();

    ArrayList<String> ingress_text_future = new ArrayList<String>();
    ArrayList<String> ingress_text_past = new ArrayList<String>();

    ArrayList<String> body_text_future = new ArrayList<String>();
    ArrayList<String> body_text_past = new ArrayList<String>();
    //ArrayList<Date> mydate = new ArrayList<Date>();


    FileOutputStream fos=null;
    try {
        URL business_url = new URL(url);
        URLConnection tc = business_url.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(tc.getInputStream()));

        StringBuffer fileData=new StringBuffer();

        String line;
        while ((line = in.readLine()) != null)
        {
            fileData.append(line);

            JSONArray ja = new JSONArray(line);
            Log.v("line"," "+line);

            for (int i = 0; i < ja.length(); i++) 
            {
                JSONObject jo = (JSONObject) ja.get(i);
                try
                {
                    Date today = new Date();
                    Log.v("todays date","date--"+today);
                    DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
                    Date date1 = df.parse(jo.getString("date"));
                    if(today.after(date1))
                    {
                        if(jo.getString("image_1")!=null)
                            image1_past.add(jo.getString("image_1"));
                        else
                            image1_past.add(" ");
                        if(jo.getString("image_2")!=null)
                            image2_past.add(jo.getString("image_2"));
                        else
                            image2_past.add(" ");
                        if(jo.getString("date")!=null)
                            date_past.add(jo.getString("date"));
                        else
                            date_past.add(" ");
                        if(jo.getString("headline")!=null)
                            headline_past.add(jo.getString("headline"));
                        else
                            ingress_text_past.add(" ");
                        if(jo.getString("ingress_text")!=null)
                            ingress_text_past.add(jo.getString("ingress_text"));
                        else
                            headline_past.add(" ");
                        if(jo.getString("body_text")!=null)
                            body_text_past.add(jo.getString("body_text"));
                        else
                            body_text_past.add(" ");
                    }
                    else
                    {
                        if(jo.getString("image_1")!=null)
                            image1_future.add(jo.getString("image_1"));
                        else
                            image1_future.add(" ");
                        if(jo.getString("image_2")!=null)
                            image2_future.add(jo.getString("image_2"));
                        else
                            image2_future.add(" ");
                        if(jo.getString("date")!=null)
                            date_future.add(jo.getString("date"));
                        else
                            date_future.add(" ");
                        if(jo.getString("headline")!=null)
                            headline_future.add(jo.getString("headline"));
                        else
                            headline_future.add(" ");
                        if(jo.getString("ingress_text")!=null)
                            ingress_text_future.add(jo.getString("ingress_text"));
                        else
                            ingress_text_future.add(" ");
                        if(jo.getString("body_text")!=null)
                            body_text_future.add(jo.getString("body_text"));
                        else
                            body_text_future.add(" ");
                    }
                }
                catch (ParseException e)
                {
                      e.printStackTrace();
                }

            }
        }

        writeInternalStoragePrivate("Nyheter.txt",fileData.toString().getBytes());
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if(headline_future.size()!=0)
    {
        data_nyheter_future.add(image1_future);
        data_nyheter_future.add(image2_future);
        data_nyheter_future.add(date_future);
        data_nyheter_future.add(headline_future);
        data_nyheter_future.add(ingress_text_future);
        data_nyheter_future.add(body_text_future);
    }
    if(headline_past.size()!=0)
    {
        data_nyheter_past.add(image1_past);
        data_nyheter_past.add(image2_past);
        data_nyheter_past.add(date_past);
        data_nyheter_past.add(headline_past);
        data_nyheter_past.add(ingress_text_past);
        data_nyheter_past.add(body_text_past);
    }


}


use the handler to call the same runnable obect for example when start the activity

handler.post(runnable,1000);

this will call the runnable after start the activity.

now in your runnable run method call same thing

like after 30 sec

private Runnable runnable = new Runnable(){
    public void run(){
       ........ ///do something
       handler.post(runnable,30000);
    }
}

this will call continuously until you don't remove the runnable from handler object

like this way

handler.removeCallback(runnable);


You may use AlarmManager it supports pereodical execution

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜