Android :: Update A View From A TimerTask?
May 21, 2009Is it a no-no to try to update a View from a TimerTask? My initial experiments indicate it doesn't work. Is there a way to make it work?

Is it a no-no to try to update a View from a TimerTask? My initial experiments indicate it doesn't work. Is there a way to make it work?
Can I rely on Timer and TimerTask to work properly on Android?
I have a background Service with a single Timer, and I schedule (possibly multiple) TimerTask's via Timer.schedule()
At the beginning of each implemented TimerTask.run() method, I check the TimerTask.scheduledExecutionTime() and compare it with the current time. Sometimes things are fine, and the difference is a small number of ms. But sometimes things are nowhere near fine, and the invocation of my TimerTask is *way* late -- like multiple hours late.
Can an Android phone go into some deep sleep mode when it doesn't think anything is going on that would cause a TimerTask to be so late? Can I not reliably use TimerTask for scheduling events, and should I be using some Android-specific means (e.g. the AlarmManager, or a Handler) instead?
I have not found anything that says that java.util.TimerTask shouldn't be sufficient, the Android docs include no kinds of qualifiers, and this post (from Mark Murphy, who's written several good Android books) specifically mentions it as being available:
http://groups.google.com/group/android-developers/browse_thread/threa...
I'm calling this tasks:
CODE:.........
And here are the two TimerTasks:
CODE:........
As you can see, I just call a method after 5 resp. 10 seconds. From time to time I would like to pause the "countdown". This means i want that the time until the 5 seconds are passed isn't running anymore. And then in a later point in time, I would like to resume it. How can I achieve that?
I have noticed that when display goes to sleep, my TimerTask is also freezed, until display is waked up. I need my TimerTask to execute (a BlueTooth operation every few minutes) even while the display is sleeping.
How do i achieve this (eventually using something else instead of a TimerTask)?
I have one simple question regarding Java TimerTask. How do I pause/resume two TimerTask tasks based on a certain condition? For example I have two timers that run between each other. When a certain condition has been met inside the task of first timer, the first timer stops and starts the second timer, and the same thing happens when a certain condition has been met inside the task of second timer.how do I pause timer1 while running timer2 and vice versa while timer2 is running? Performance and timing is my main concern as this needs to be implemented inside another running thread. By the way I am trying to implement these concurrent timers on Android.
View 4 Replies View RelatedI am trying to execute a {public void} method in Service, from scheduled TimerTask which is periodically executing.This TimerTask periodically checks a condition. If it's true, it calls method via {className}.{methodName};However, as Java requires, the method needs to be {pubic static} method, if I want to use {className} with {.dot}.The problem is this method is for notification using Toast(Android pop-up notification) and Status Bar.But for this to work, the method must not have {static} modifier and resides in Service class.So, basically, I want background Service to evaluate condition from scheduled TimerTask, and execute a method in Service class.Can anyone help me what's the right way to use Service, invoking a method when certain condition is satisfied while looping evaluation?
View 1 Replies View RelatedIf I have a View that I want updated at the same time another View updates itself. What is the correct way of doing this?
View 2 Replies View RelatedI have ListViewActivity
public class SelectActivity extends ListActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.select_one_of);
SimpleAdapter adapter = new SimpleAdapter(
this,
createChildList(),
R.layout.select_one_of_childrow,
new String[] { KEY_VALUE },
new int[] { R.id.selectoneof_add_new_item});
setListAdapter(adapter);
}
// ...
}
after setListAdapter() calls I would like to execute the following code:
((TextView) getListView().getChildAt(0).findViewById(R.id.selectoneof_add_new_item)).setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ticked, 0); but getListView().getChildAt(xxx) returns null and I catch NullPointerException. Where should I put mentioned above code-snippet?
I have a List activity which use cursor adapter. When an item of database is changed, I hope the corresponding view of this list can update and get new data from database. I know the time when database is changed, but how to update view?
View 7 Replies View RelatedI am seeing some weird issues and looking to see if anyone knows what is going on. I have a BroadcastReceiver which updates some views on receiving an event. Some psudo code is shown below. What happens is the function runs fine and the app seems to update the textviews BUT when i then try to clear the textviews parent and add new textviews the linearlayout(parent) blanks out and will now draw any of it's children.
View 2 Replies View RelatedI have an activity which starts a service. In the service there is a network lookup in an AsyncTask. Results from the lookup are saved to a database.
The activity queries to database and shows the newest entries. But at the very first run the database is empty, so there is nothing to show. In this case I would like to show a progress dialog to the user while the network lookup is taking place. I would like to dismiss the progress dialog when the first lookup is finished.
Is there a way to access the progress dialog created in the activity from the service? Or how to do it?
I am using expandable list view in my layout which contain list of fitness activities i have done on that particular day. I can see all the list of activities when i initially open my Activity. But when i add new activities, i can not see new activities in my expandable list view. How can i see my new activities when i come back from other screens?
View 1 Replies View RelatedCurious to know the reason behind not allowing updating UI elements from background thread in Android. Will main thread does something more (probably interacting with framework) after updating the UI elements so that changes can be seen on the screen? Is it the same case with other GUI tool kits?
View 1 Replies View RelatedI have a GridView, using a custom adapter (myAdapter extends BaseAdapter), where each item in the grid holds an ImageButton. getView() is working fine.
However, from elsewhere in my code, how can I update the image (setImageResource) for one particular item in the grid based on its position in the GridView?
So far, I've added this to my adapter class:
CODE:........
And would like to write something like this: mygridview.getItemIdAtPosition(20).changeImage(); (doesn't compile).
My purpose is very simple : each 1second, I want to redraw an object on different place on background. I do not know where my error on this code below. Here is my code:
public class My_View extends View{ private Bitmap mBackground_img;
private Drawable mMoveObject; private int mObjectw,mObjecth; private int Dx,Dy;
private Handler myHandler = new Handler(); private long lasttime;
public My_View(Context context,AttributeSet ats,int ds) {
super(context,ats,ds); init(context);
} public My_View(Context context,AttributeSet ats) { super(context,ats);
init(context); } public My_View(Context context) { super(context);
init(context); } public void change() { invalidate();
} private void init(Context context) {
Resources res = context.getResources();
mMoveObject = res.getDrawable (R.drawable.lander_firing);
mBackground_img = BitmapFactory.decodeResource(res, R.drawable.my_pic);
mObjectw = mMoveObject.getIntrinsicWidth();
mObjecth = mMoveObject.getIntrinsicHeight();
Dx = Dy = 0; lasttime = System.currentTimeMillis() + 1000;
Thread mthread = new Thread(null,doBackground,"Background");
mthread.start(); } private Runnable doBackground = new Runnable() {
public void run() { long now = System.currentTimeMillis();
if(lasttime < now ) { Dx = Dx + 10; Dy = Dy + 10;
lasttime = now + 1000; myHandler.post(change_view);
} } }; private Runnable change_view = new Runnable() {
public void run() { change();
} };
@Override public void onDraw(Canvas canvas) {
canvas.drawBitmap(mBackground_img,0 ,0 , null);
mMoveObject.setBounds(Dx, Dy, Dx+mObjectw, Dy+mObjecth);
mMoveObject.draw(canvas);
} }
I am trying to set up a ViewFlipper that changes a SlidingDrawers content each time a button is pressed. So far every view I set up worked fine, but now I am trying to create a ListView (including single_choice_mode) within a child view of the ViewFlipper, but my attempt only let to a NullPointerException. As I only discovered ViewFlipper today, I am not yet familiar with it and may not have understood it completely. if someone could give me a hand and help me find out what I have done wrong, that would be great. Here is what I have done:
The code for the onClick event of the ImageButtons:
public void onClick(View v){
if (v == btnExposure){
mFlipper.setDisplayedChild(0); }
else if (v == btnProperties){
mFlipper.setDisplayedChild(1);}
else if (v == btnSpecialEffects){
mFlipper.setDisplayedChild(2);.............
I'm currently facing a big problem causing me inconveniences.I've just update the samsung galaxy s3 software yesterday, then when I try to upload photos, I couldn't open anything, any photos, sometimes the albums will disappear itself,sometimes come back again.
I tried to remove my memory card or sd card and put it back again but useless.
Always stuck in the gallery main page, cannot even use return key/button.
Anyone else having problems viewing videos on youtube after the update?It was working fine before the update and now i can't view 99% of the videos i try to view on youtube.what's even worse is that the videos i CAN view won't work when i try to switch to the HD mode?how do I fix this?
View 8 Replies View RelatedI am unable to find my gallery on my phone in Facebook after the new jellybean operating systems update. It will show a couple of camera shots. I post pictures all of the time. Now I am unable to do so. It worked fine with the icecreme sandwich operating system. But it hasnt adapted to the jellybean.
View 7 Replies View RelatedThis is a big disappointment for me. As reported in the "known issues" leaked document, you cannot view a PDF from the standard e-mail client. You have to save the attachment to SD then use a file explorer to find the file and view it. A huge pain!
I was sure hoping yesterday's update would fix this issue, but it did not.
If VZW and Sammy hope to make this phone a contender in the business market, this must be fixed. Email 101 guys.
I know I can use Touchdown, but don't like how it integrates with the rest of the phone.
I was pleased to see pinch and zoom on the email client, unlike the Droid X/2, but this lack of PDF attachment viewing is just unacceptable!
I currently have a tab layout with 2 tabs, one tab with a list view and one with the option make strings so I can add them in the list view. Both tabs have their own activity because this made the code much more structured, and I dont have to repeat my self later.
Lets say im in the tab that offer me to create an string, and i press the update list button, how do I update the list view without startActivity()? If i use startActivity(), it starts List.java, and instead of displaying the list in the list view tab, it takes full screen, which defies the purpose of the tab view. In other words, the startActivity() steals the focus from the tab view of the list, and sends it fulscreen.
I want to update the activity in my list view tab, without starting a new activity that goes to fullscreen, and doesnt update the one in the tab.
So i just loaded one of the new ROMs based on todays OTA.
I did the nandroid. I did the titanium. i flashed using rom manager and selected clear cache/data.
ROM loaded perfectly.. and when i went to titanium to restore, nothing was there!
I plugged the phone into the computer, and i can't even view the card.
I can browse the phone's memory, but not the cards.
I'm hoping there's some adb command or something that'll fix this...
I am working on developing an app and I am not sure when should I use a new activity and when should I update the existing view.
For example, lets say I have a view that shows a multiple choice question.Now, when the user selects his choices and clicks on say "Evaluate", I want to show the same question view but along with the right answers and explanations for each option. So does that mean, I should send an Intent upon a click on Evaluate or I should just update the view (i am not sure how)?
If I send an intent and show a new screen, how can the user go back to the next question without displaying the answers? If I don't create an new activity, how can I update the existing view that is already displayed?
I want to build my own custom view which should look like the Crysis-GUI.At first I designed a XML-based Layout and made it visible via the setContentView(int resid)-Method. Worked pretty well.But now I wan't to go a step further and draw in my Layout. So I created a new Class, let it extend View and overrode the onDraw()-Method. So far so good.But how can I still use my XML-Layout? I can't do setContentView anymore, so how could the same effect be achieved?
View 1 Replies View RelatedI have a problem with my DDMS in eclipse. In the logcat view appears only this failure: Logcat View fails with "Could not create the view: For input string: "our" "
I uninstalled and reinstalled the adt and ddms already without any change. I can use the logcat in the command line (tools- adt logcat) but this is not as comfortable as using the logcat in eclipse.
More details of this failure message are:
CODE:...............
So my layout looks basically like this:
<ScrollView>
<RelativeLayout>
<BunchOfViews/>
<ImageView android:layout_alignParentBottom="true"/>
</RelativeLayout>
</ScrollView>
I have the ScrollView so all of the layout always is visible no matter the height of the screen. The problem is that on a very high screen, I still want my imageview to be at the bottom. However, a child of a ScrollView dont seem to have a defined bottom. The View is placed at the top of the layout. How can I solve this problem in a neat way?
I like to know how can i clone a view object which is already there in the view hierarchy, so that it can be added to the same view hierarchy again.
View 1 Replies View RelatedI have an XML layout with some custom tabs, a heading, and a ProgressBar(main.xml). I wish to add another XML layout(home.xml) to the main.xml layout, as i wish to keep main.xml re-usable for other activity's layouts and simply add things to it as necessary.The problem: after inflating R.layout.home into rootLayout, it seems as though the ProgressBar contained in rootLayout is hidden underneath the content of home.xml.Is there a way to tell certain views(via XML) to float above other views when the layout is constructed in this way?if not, am i forced to use methods such as progressBar.bringToFront() to raise targeted views to the top?what alternatives do i have in z-ordering views when some layouts are constructed using inflation?
View 2 Replies View RelatedI have a WebView inside the ScrollView. The content of WebView dyanamically changes when it displays different html page. I have the following issue: For example I have A.html, and B.html. The content of B.html is larger than A.html, so the page is longer. When WebView load B.html, the ScrollView stretches its size to enable itself scroll for B.html, then if I go back to A.html, ScrollView doesn't resize itself. (The scroll area is exceed the content of A.html) What I want to have, is dynamic change the scroll area of scroll view to fit the webview's content.
View 3 Replies View RelatedI have a selection for some items using a spinner widget. At the moment the spinner will load a simple Textview and show the name of the item.It is possible to define an own view to show inside the spinner row? I would suspect it being similar to a custom List row.I simply want to show an individual icon left from the spinner text for each item in the list.
View 1 Replies View Related