Android :: On What Thread Event Handlers Executed?
Nov 7, 2010On what thread are event handlers (like onAnimationEnd, onTouchEvent, onKeyEvent, onClick) executed? Are they called sequentially or can two handlers may execute simultaneously?

On what thread are event handlers (like onAnimationEnd, onTouchEvent, onKeyEvent, onClick) executed? Are they called sequentially or can two handlers may execute simultaneously?
Which is the way to attach the custom event handlers for the activities, in case they support one, when the activity is started using Intent and startActivity() methods. Does intent has a special way to take up the handler callback references. Basically, I wish to handle call end activity after invoking the call activity.
View 2 Replies View RelatedI have an AIDL service that is intended to be used by both out-of- process remote users and in-process local users. As a result, my common interface methods will either be invoked on the UI thread or in a binder background thread. The logic between the two is not the same. How do I distinguish between these two cases?
View 4 Replies View RelatedWe are supposed to make UI actions only from the main UI thread. But it is not clear to me if callbacks like LocationUpdateListener (and other callbacks from sensors) are already in the UI thread or they require special care to access the UI components.
View 2 Replies View RelatedIm working on a small application to try out an idea that I have. The idea is to periodically update the UI when event of some sort occurs. In the demo I've created, I'm updating a ProgressDialog every 2 seconds for 15 turns. The problem I am having, which I don't quite understand is that when an event is handled, I send a message to the handler which is supposed to update the message in the ProgressDialog. When this happens however, I get an exception which states that I can't update the UI from that thread.Am I missing something? The logic makes sense to me and it looks like everything should work, I'm using a handler to update the UI like it is recommended.
View 1 Replies View RelatedIf I want to send an event, e.g. OnClick, to an activity from a thread? The expected work flow is below:public class HelloAndroid extends Activity {public void onCreate(Bundle savedInstanceState)Code...
View 4 Replies View RelatedI want to create multiple handlers that gets triggered based on users selection, but this handlers implement the same runnable method. the only difference is that they call different postDelayed() method. how do i go about achieving this without rewriting the same code for the runnable? i am still not clear about how the handleMessages() works and if it can be used for this?
View 1 Replies View RelatedI want to display the imageviews one by one that means if image1 is displayed after 2 sec another image is displayed .but i don't want to use threads why because my application is small.I want to use handlers.So give me some suggestions.
View 1 Replies View RelatedI seem to be having a weird issue when parsing XML from a server. In LogCat the following warning is displayed:08-31 12:05:28.870: WARN/ExpatReader(2031): DTD handlers aren't supported.The parser then seems to stop. I can't figure out what is causing this problem, my approach doesn't seem any different in this instance with regard to parsing XML. Does anyone have any recommendations to fixing this issue?
View 3 Replies View RelatedI have got to know that the Handlers are basically used to Run the Small Section of Code and etc...But I didn't got the exact scenerio about when particularly It is Ideal to use the Handlers. Code...
View 2 Replies View RelatedI've more than one Handlers in an Activity. I create all the handlers in the onCreate() of the main activity. My understanding is the handleMessage() method of each handler will never be called at the same time because all messages are put in the same queue (the Activity thread MessageQueue). Therefore, they will be executed in the order in which are put into the Queue. They will also be executed in the main activity thread. Is this correct ? Code...
View 1 Replies View RelatedI need to create a daemon to monitor traffic, and I am using similar method as uuidd.rc to create a daemon. However, I can't the way(code) that the Uuidd.rc can be started? neithor from init.rc or system ("Uuidd.rc").
can someone let me know how the daemon or (.rc) can be executed? code....
I was wondering if it is possible to have different behavior depending on a click on the icon and the text inside a TextView... Any suggestions?
View 1 Replies View RelatedI want to send an intent from a crash handler [ crash(String tag, Throwable t) in RuntimeInit.java) ] to an activity (stand alone appllication)
I tried to send it from above handler as follows..
CODE:................................
But i failed to send an intent to my application..
Can i send an intent to my application fro RuntimeInit.java handlers?
This question is related to an existing question I asked. I though I'll ask a new question instead of replying back to the other question. Cannot "comment" on my previous question because of a word limit. Marc wrote - I've more than one Handlers in an Activity." Why? If you do not want a complicated handleMessage() method, then use post() (on Handler or View) to break the logic up into individual Runnable. Multiple Handlers makes me nervous. I'm new to Android. Is having multiple handlers in a single activity a bad design ?
I'm new to Android.My question is - is having multiple handlers in a single activity a bad design ? Here is the sketch of my current implementation. I've a mapActivity that creates a data thread (a UDP socket that listens for data).
My first handler is responsible for sending data from the data thread to the activity. On the map I've a bunch of "dynamic" markers that are refreshed frequently. Some of these markers are video markers i.e., if the user clicks a video marker, I add a ViewView that extends a android.opengl.GLSurfaceView to my map activity and display video on this new vide.
I use my second handler to send information about the marker that the user tapped on ItemizedOverlay onTap(int index) method.The user can close the video view by tapping on the video view. I use my third handler for this. I would appreciate if people can tell me what's wrong with this approach and suggest better ways to implement this.
I am trying to update TextView in my Activity with text messages from DatagramServer ( see below) The problem I have is that "backgound UDP server receives plenty of traffic, but onProgessUpdate is ever executed only once so only the first of the messages appear in the TextView.
public class MyActivity extends Activity {
TextView txtStatus; // txtStatus initialized
new BackgroundAsyncTask().execute();
public class BackgroundAsyncTask extends
AsyncTask<Void, String, Void> {
public static final String SERVERIP = "127.0.0.1";
// 'Within' the emulator! public static final int SERVERPORT = 2222;
private DatagramSocket socket;
protected Void doInBackground(Void... params) {
try { InetAddress serverAddr = InetAddress.getByName(SERVERIP);
Log.d("UDP", "S: Waiting for connection...");
socket = new DatagramSocket(SERVERPORT, serverAddr);
while(true) { byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
Log.i("telemetry server", " waiting for packet");
socket.receive(packet);
Log.i("received", new Integer(packet.getLength()).toString());
Log.i("UDPServer received:", new String(packet.getData()));
publishProgress(new String(packet.getData()));
} } catch (Exception e) { Log.i("Dbg server", e.getMessage());
} // end of try Log.i("Dbg server", "Dbg server: Done.");
socket.close(); return null;
} @Override protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
//it will never been shown in this exercise...
} @Override protected void onPreExecute() {
// TODO Auto-generated method stub
} @Override protected void onProgressUpdate(String... values) {
txtStatus.append(values[0] + " ");
} }
This is the class that calls my Service:
public class TicketList extends ListActivity {
private ArrayList<Tickets> alTickets = new ArrayList<Tickets>();
private boolean listCreated = false;
private static Drawable background = null;
private Resources res;
private Tickets ticket = null;
private TicketConnector localService;
[Code]
Here is the output of LogCat at verbose mode while activating the TicketList Activity:
09-28 23:22:11.420: INFO/ActivityManager(795): Starting activity: Intent { cmp=org.mw88.cmdb/.gui.TicketListActivity }
09-28 23:22:12.340: WARN/ActivityManager(795): Binding with unknown activity: android.os.BinderProxy@4410bf30
09-28 23:22:16.090: INFO/ActivityManager(795): Displayed activity org.mw88.cmdb/.gui.TicketListActivity: 4606 ms (total 4606 ms)
private class ExecuteLocations extends AsyncTask<String, Void, Void>{
private final ProgressDialog dialog = new ProgressDialog(ListProfiles.this);
protected void onPreExecute() {
//this.dialog.setMessage("Starting pre-execute...");
//this.dialog.show();
} @Override protected Void doInBackground(String... arg0) {
check_profiles_lm=(LocationManager) ListProfiles.this.getSystemService(LOCATION_SERVICE);
myLocListen = new LocationListener(){
@Override public void onLocationChanged(Location location) { HashMap params = new HashMap();
params.put("lat", Double.toString(location.getLatitude()));
params.put("long", Double.toString(location.getLongitude()));
postData("http://mydomain.com",params);
} @Override public void onStatusChanged(String provider, int status,Bundle extras) {
} @Override public void onProviderDisabled(String provider) {
} @Override public void onProviderEnabled(String provider) {
} };
check_profiles_lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 30000, 0, myLocListen);
return null; } protected void onPostExecute(final Void unused) {
if (this.dialog.isShowing()) { //this.dialog.dismiss();
} //Do something else here
} }
Basically, my objective is:
Constantly post the latitude/longitude to my website every minute or so. Of course, I want to do this in another thread, so it doesn't mess up my UI thread. This AsyncTask is supposed to solve that but it's bringing up an error and I don't know why. What can you do to accomplish my objective? It's very simple...just scan location and post to web every minute, in the background. By the way, my onCreate method is like this. That's basically it.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new ExecuteLocations().execute();
setContentView(R.layout.main_list);
}
I use onLongClick and onClick events of a button to get user inputs. Whenever; the user long click and triggers onLongClick event, the onClick event is also triggered. I couldn't find my problem. The code of two methods are shown in below: Code...
View 2 Replies View RelatedI am writing an Application that has multiple layouts with buttons. I have set up onClickListners for the buttons. Some buttons will change the activity and bring up a new layout with new buttons, and others will send outgoing SPP strings over Bluetooth. The strings will be defined in an XML file and will not change (serial commands).I can hard code the MAC address of the Bluetooth Server and only need to send data, not receive.
I am looking for some general guidance on the direction to go as far as setting up my Bluetooth connection and outgoing transmissions. I have looked at the BluetoothChat example extensively but do not have any good resources in the case of multiple activities.
-Do I use a separate activity to manage all Bluetooth transmissions and connections and create handlers for every case where I would send a Bluetooth message?
-Should I add Bluetooth connection+transmission threads in every activity (seems like i would run into issues losing the connection when changing activities)?
-Can I use handlers that are not class specific where the BluetoothService Activity could send whatever was prompted by the active/current activity?
-Could I just hard code all strings to be sent in the BluetoothService Activity and the UI activity could prompt the BluetoothService Activity to send the requested string based on the button click?
I'm implementing the onBackPressed() method in my activity. It's crucial to my app that I have this functionality. But, the control never enters this function. It enters onPause() instead, when I press the back button. But the problem is I can't have the same logic in onPause() because when I call another activity, the current activity calls onPause() and I don't want it to execute what should be in onBackPressed().
public void onBackPresed(){
Log.d(TAG,"inside onBackPressed()");
if(STATE == PREVIEW){
} }
In Android , Native code is written as follows.
JNIEXPORT void JNICALL Java_com_android_Test_show(JNIEnv *env, jobject obj) {
printf("THIS IS TEST");
}
I try to execute shell commands, this does work as it should. Even the result comes back (as is see on LogCat). The problem ist the last line of the result. Every time a readLine() on the last line occurs (which shouldn't occur, temp should be null), the app hangs forever and doesn't come back from the readLine call. Maybe you find the error. I tried readUTF and standart read(), all the same problem. And yes, the app got su-rights.
try {
Process process = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
DataInputStream osRes = new DataInputStream(process.getInputStream());
for (String single : commands) { os.writeBytes(single + " ");
os.flush(); String temp = new String();
while( (temp = osRes.readLine()) != null) { Log.v("NITRO", temp);
result2 += temp + " ";
} } os.writeBytes("exit");
os.flush(); process.waitFor();
} catch (IOException e) { Toast.makeText(Main.this, "Error", Toast.LENGTH_LONG);
} catch (InterruptedException e){ Toast.makeText(Main.this, "Error", Toast.LENGTH_LONG);
}
That is the StackTrace where it hangs when I stop debugger when hanging:
OSFileSystem.readImpl(int, byte[], int, int) line: not available [native method]
OSFileSystem.read(int, byte[], int, int) line: 118
ProcessManager$ProcessInputStream(FileInputStream).read(byte[], int, int) line: 312
ProcessManager$ProcessInputStream(FileInputStream).read() line: 250
DataInputStream.readLine() line: 309
Main$2$1.run() line: 84
ViewRoot(Handler).handleCallback(Message) line: 587
ViewRoot(Handler).dispatchMessage(Message) line: 92
Looper.loop() line: 123
ActivityThread.main(String[]) line: 4627
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 868
ZygoteInit.main(String[]) line: 626
NativeStart.main(String[]) line: not available [native method]
I have trouble with finding my SQLite Database.
As we can access the SQLite databases on a running emulator like below:
adb -s emulator-5554 shell
sqlite3 /data/data/package_name/databases/database_name
But what if I am testing my application on real device(HTC Here-Android) ?
where does i find my database?
I am developing a app using android C2DM. sqlite3 is my back-end. Everything is just working fine but am struck with an performance issue regarding sqlite3. so my question is 'can i place the database code somewhere where it will be executed only once i.e The dvm(dalvik vertiual machine) should execute the code pertaining to the db only once; during the successive run the dvm should not go thru the (db)code because the db had been created.
More specifically, my app send msg to all the phones which has my app. so when an app at the client end receives a msg, the dvm should not execute this code : SQLiteDatabase db;
//use tat ref to open or create a table
db = openOrCreateDatabase( "/data/data/de.vogella.android.c2dm.simpleclient/app_database/file__0/0000000000000001.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
try
{
[code]....
Because everytime a msg comes this code ll be executed.
How can I implement a run() method of thread if I create a Thread Global?
I mean If I create a Thread Globally then can I implement its run() method {" public void run()"} anywhere in my Application?
In the run() method I have to write the code to perform some action.
IF I can do it then please can anyone show me briefly how to do it particularly.
I am writing an application in which i need to handle messages between the main thread(the deafult UI related thread) and the user created Gamethread.
The requirement is like this.
An activity(say "Activity_X") is setting the view by "setContentView(some "View_Y")". In "Activity_X" i have implemeted "onCreateOptionsMenu()" and "onOptionsItemSelected()" fucntions for creating menus & a switch case for action to be taken on selecting those menus.Menu has items like "resume/pause/zoom/" .
All action to be take on selecting these menus are implemented in "View_Y" in a separate Gamethread by extending "Thread" class.
So whenever a menu is selected in "Activity_X" i need to send a message to "View_Y". And on receiving this ,a particular action/method should be called in View_Y(GameThread).
How can i achieve this using Handlers?Is there any other way of doing this? Please do share with me some code snippets for these.
I have a separate thread running to get data from the internet. After that, I would like to update the ListView in the main thread by calling adapter.notifyDataSetChanged(). But it does not work. Any workaround for that?
View 1 Replies View RelatedI want to do the drawing in another thread to speed up the game(it is way to slow right now). I was told to do this but don't quite understand why that would speed things up. Is it GameView that should implement Runnable? Should I make the thread sleep when not drawing? where should I start the thread? package com.android.WWS;
import android.app.Activity; import android.content.Context; import android.graphics.*; import android.os.Bundle; import android.view.SurfaceView; import android.view.KeyEvent; import android.view.View; import android.view.View.OnKeyListener; import java.lang.Runnable; import java.lang.Thread;...................
I hope there is a way to resolve this or bye bye hero.
View 10 Replies View Related