2013-06-14 15 views
6

मुझे पता चला है कि मैं "ऑटो रीफ्रेश" या मेरे प्रोग्राम के लिए एक रननेबल विधि कैसे कर सकता हूं, मैंने हैंडलर और थ्रेड्स के बारे में कुछ पोस्ट देखी हैं ... मुझे लगता है कि मैं क्या कर रहा हूं से खोज एक धागा है, लेकिन मैं कार्यक्रम काम करने के लिए प्राप्त नहीं कर सकते ... मैं आपको कुछ कोड दिखाने दें:एंड्रॉइड: एक निश्चित समय के बाद "ऑटो रीफ्रेश करें"

refresh.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      getUrlText(); 
      if (time.getText().toString().equals("") 
        || time.getText().toString().equals("0")) { 
       mins = 0; 
      } else { 

       mins = Integer.parseInt(time.getText().toString()); 
       setTimer(mins); 
       t.start(); 


      } 

     } 

     private void setTimer(int mins) { 
      miliSecTime = mins * 60 * 1000; 

     } 
    }); 

    t= new Thread() { 
     @Override 
     public void run() { 
      long start = System.currentTimeMillis(); 

      while (true) { 
       long time = System.currentTimeMillis() - start; 
       int seconds = (int) (time/1000); 
       if (seconds > miliSecTime) { 
        getUrlText(); 
        start = System.currentTimeMillis(); 

       } 
      } 
     } 
    }; 
} 

तो, कोड के इस हिस्से उपयोगकर्ता से एक नंबर मिलना चाहिए और उसके बाद getUrlText निष्पादित() ; प्रत्येक एक्स मिनट, जहां एक्स उपयोगकर्ता संख्या इनपुट है ... मेरी समस्या दौड़ में होनी चाहिए लेकिन मुझे पता नहीं चल सकता है कि क्या है ... मदद के लिए अग्रिम धन्यवाद :)

+0

ऐसा कुछ करने के लिए, आप http://developer.android.com/reference/android/app/AlarmManager.html का उपयोग करना बेहतर होगा। – 323go

उत्तर

8

यहां ऐसा करने का एक तरीका।

अपनी गतिविधि में इन घोषित:

button.setOnClickListener(new OnClickListener() { 

    @Override 
     public void onClick(View v) { 
      getUrlText(); 
      handler.post(timedTask); 
     } 
    }); 

यह timedTask हर 1000 मिलीसेकेंड निष्पादित करेंगे:

Handler handler = new Handler(); 
Runnable timedTask = new Runnable(){ 

    @Override 
    public void run() { 
     getUrlText(); 
     handler.postDelayed(timedTask, 1000); 
    }}; 

फिर अपने onClick निर्धारित किया है। आवश्यकतानुसार इस संख्या को बढ़ाएं।

मुझे यकीन नहीं है कि आप mins के साथ क्या कर रहे हैं और इसी तरह अपने सभी तर्क को timedTaskRunnable में समय-समय पर निष्पादित करने की आवश्यकता है। उम्मीद है कि समझ में आता है।

2

1. बनाने हैंडलर

Handler handler = new Handler(); 

2. Runnable वस्तु बनाएं

public final Runnable runnable = new Runnable() { 

    @Override 
    public void run() { 
     // your code while refreshing activity 
    } 
}; 

3. हैंडलर वस्तु की कॉल विधि

handler.postDelayed(runnable, 3000); 

// 3000 मिलीसेकेंड में समय है

// इस() // onResume() onCreate में विधि

या कहाँ ताज़ा ले जगह

5

आप ऑटो-ताज़ा की कार्यान्वित के लिए इस कोड का उपयोग कर सकते हैं डाल नीचे एक निश्चित समय के लिए अपनी गतिविधि का।

सबसे पहले आप नीचे दिए गए हेडर के नेमस्पेस का उपयोग कर सकते हैं।

import android.os.Handler; 

Handler का नया उदाहरण बनाने के बाद।

private final Handler handler = new Handler(); 

फिर नीचे के रूप में ताज़ा करने के लिए एक एक विधि लिख सकते हैं और OnCreate विधि दायरे में कहते हैं, यहाँ मैं 5000 मिलीसेकंड या 5 सेकंड का इस्तेमाल किया है। आप अपनी इच्छा के रूप में बदल सकते हैं। नीचे के रूप में स्वत: रीफ्रेश का पुट विधि के लिए

private void doTheAutoRefresh() { 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      // Write code for your refresh logic 
      doTheAutoRefresh(); 
     } 
    }, 5000); 
} 

अंतिम कोड।

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

    doTheAutoRefresh(); 
} 
संबंधित मुद्दे