යාවත්කාලීන කිරීම - 2016
හොඳම විකල්පය භාවිතා කිරීමයි RxAndroid
(සඳහා විශේෂිත සබඳතා RxJava
සඳහා) P
තුළ MVP
දත්ත දැමිමේ භාර ගන්නා ලෙස ය.
Observable
ඔබගේ පවතින ක්රමයෙන් ආපසු යාමෙන් ආරම්භ කරන්න.
private Observable<PojoObject> getObservableItems() {
return Observable.create(subscriber -> {
for (PojoObject pojoObject: pojoObjects) {
subscriber.onNext(pojoObject);
}
subscriber.onCompleted();
});
}
මේ ආකාරයෙන් නිරීක්ෂණය කළ හැකි දේ භාවිතා කරන්න -
getObservableItems().
subscribeOn(Schedulers.io()).
observeOn(AndroidSchedulers.mainThread()).
subscribe(new Observer<PojoObject> () {
@Override
public void onCompleted() {
// Print Toast on completion
}
@Override
public void onError(Throwable e) {}
@Override
public void onNext(PojoObject pojoObject) {
// Show Progress
}
});
}
-------------------------------------------------- -------------------------------------------------- ------------------------------
මම දන්නවා මම ටිකක් පරක්කුයි නමුත් මෙන්න යනවා. ඇන්ඩ්රොයිඩ් මූලික වශයෙන් ක්රියා කරන්නේ UI නූල් සහ පසුබිම් නූල් යන නූල් වර්ග දෙකක ය . ඇන්ඩ්රොයිඩ් ප්රලේඛනයට අනුව -
මෙම ගැටළුව විසඳීම සඳහා UI නූල් වලින් පිටත සිට ඇන්ඩ්රොයිඩ් UI මෙවලම් කට්ටලයට ප්රවේශ නොවන්න, ඇන්ඩ්රොයිඩ් වෙනත් නූල් වලින් UI නූල් වෙත ප්රවේශ වීමට ක්රම කිහිපයක් ඉදිරිපත් කරයි. උදව් කළ හැකි ක්රම ලැයිස්තුවක් මෙන්න:
Activity.runOnUiThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable, long)
දැන් මෙම ගැටළුව විසඳීම සඳහා විවිධ ක්රම තිබේ.
කේත නියැදියකින් මම එය පැහැදිලි කරමි:
runOnUiThread
new Thread()
{
public void run()
{
myactivity.this.runOnUiThread(new Runnable()
{
public void run()
{
//Do your UI operations like dialog opening or Toast here
}
});
}
}.start();
ලූපර්
නූල් සඳහා පණිවිඩ පුඩුවක් ධාවනය කිරීමට භාවිතා කරන පන්තිය. පෙරනිමියෙන් නූල් වලට පණිවිඩ ලූපයක් සම්බන්ධ නොවේ; එකක් නිර්මාණය කිරීමට, ලූපය ධාවනය කිරීමට අවශ්ය නූල් එකේ සූදානම් () අමතන්න, ඉන්පසු ලූප් () ලූපය නතර වන තුරු පණිවිඩ සැකසීමට එය කරන්න.
class LooperThread extends Thread {
public Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};
Looper.loop();
}
}
අසින්ක් ටාස්ක්
ඔබේ පරිශීලක අතුරුමුහුණතෙහි අසමමුහුර්ත වැඩ කිරීමට AsyncTask ඔබට ඉඩ දෙයි. එය සේවක ත්රෙඩ් එකක අවහිර කිරීමේ මෙහෙයුම් සිදු කරන අතර ප්රති the ල UI නූල් මත ප්රකාශයට පත් කරයි.
public void onClick(View v) {
new CustomTask().execute((Void[])null);
}
private class CustomTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... param) {
//Do some work
return null;
}
protected void onPostExecute(Void param) {
//Print Toast or open dialog
}
}
හසුරුවන්නා
නූල් පණිවිඩ පණිවිඩයක් හා සම්බන්ධ පණිවුඩ සහ ධාවනය කළ හැකි වස්තු යැවීමට සහ සැකසීමට හෑන්ඩ්ලර් ඔබට ඉඩ දෙයි.
Message msg = new Message();
new Thread()
{
public void run()
{
msg.arg1=1;
handler.sendMessage(msg);
}
}.start();
Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
if(msg.arg1==1)
{
//Print Toast or open dialog
}
return false;
}
});
compile 'com.shamanland:xdroid-toaster:0.0.5'
, එයට අවශ්යrunOnUiThread()
හෝContext
විචල්ය නොවේ, සියලු පුරුදු නැති වී ඇත!Toaster.toast(R.string.my_msg);
මෙහි ආයාචනය කිරීම උදාහරණයකි: github.com/shamanland/xdroid-toaster-example