List of usage examples for android.os Handler sendMessageDelayed
public final boolean sendMessageDelayed(Message msg, long delayMillis)
From source file:Main.java
public static void loadFailed(Handler handler) { handler.sendMessageDelayed(handler.obtainMessage(LOAD_FAIL), 3000); //handler.sendMessage(handler.obtainMessage(20)); return;/*from ww w . j a v a2 s . c o m*/ }
From source file:Main.java
public static Long startDownload(DownloadManager dm, Handler handler, String location) { DownloadManager.Request request = new DownloadManager.Request(Uri.parse(location)); Long id = dm.enqueue(request); handler.sendMessageDelayed(handler.obtainMessage(MSG_DOWNLOAD_TIMEOUT, id), DOWNLOAD_TIMEOUT_MILLIS); if (DEBUG)/*w w w . j a va 2s. co m*/ Log.d(TAG, "Starting download: DownloadId=" + id); return id; }
From source file:com.squareup.picasso3.Utils.java
/** * Prior to Android 5, HandlerThread always keeps a stack local reference to the last message * that was sent to it. This method makes sure that stack local reference never stays there * for too long by sending new messages to it every second. *//*from w w w. j a v a 2 s . com*/ static void flushStackLocalLeaks(Looper looper) { Handler handler = new Handler(looper) { @Override public void handleMessage(Message msg) { sendMessageDelayed(obtainMessage(), THREAD_LEAK_CLEANING_MS); } }; handler.sendMessageDelayed(handler.obtainMessage(), THREAD_LEAK_CLEANING_MS); }
From source file:jmri.enginedriver.threaded_application.java
public boolean sendMsgDelay(Handler h, long delayMs, int msgType, String msgBody, int msgArg1, int msgArg2) { boolean sent = false; if (h != null) { Message msg = Message.obtain();/*from w ww . j a va2 s.c o m*/ msg.what = msgType; msg.obj = new String(msgBody); msg.arg1 = msgArg1; msg.arg2 = msgArg2; try { sent = h.sendMessageDelayed(msg, delayMs); } catch (Exception e) { } if (!sent) msg.recycle(); } return sent; }
From source file:com.jerrellmardis.amphitheatre.task.DownloadTaskHelper.java
public static void traverseSmbFiles(SmbFile root, NtlmPasswordAuthentication auth) throws SmbException, MalformedURLException { int fileCount = 0; boolean video_folder = false; final Video v = new Video(); Handler h = new Handler(Looper.getMainLooper()) { @Override/*from w w w . ja v a2 s.com*/ public void handleMessage(Message msg) { // super.handleMessage(msg); Video vid = (Video) msg.getData().getSerializable("VIDEO"); Log.d(TAG, "Handle " + msg.getData().getInt("WHEN") + " " + vid.getName()); updateSingleVideo(vid, null); } }; for (SmbFile f : root.listFiles()) { if (f.getParent().contains("Entertainment Media")) { // Log.d(TAG, "Discovered "+f.getPath()+" "+f.isDirectory()); } if (f.isDirectory()) { try { //TODO Port VOB folder support to USB and internal storage SmbFile[] directoryContents = f.listFiles(); // Log.d(TAG, "Going into directory "+f.getPath()); //If this works, then we can explore //Let's do some quick name checking to for time savings if (f.getName().contains("Entertainment Media")) { // Log.d(TAG, Arrays.asList(f.listFiles()).toString()); } if (!f.getName().contains("iTunes") && !f.getName().contains("Digi Pix") && !f.getName().contains("AppData") && !f.getName().startsWith(".") && !f.getName().contains("Avid") && !f.getName().contains("Spotify") && !f.getName().contains("audacity_temp") && !f.getName().contains("Media_previews") && !f.getName().contains("GFX_previews") && !f.getName().contains("Samsung Install Files") && !f.getName().contains("AE Renders") && !f.getName().contains("LocalData") && !f.getName().contains("$RECYCLE") && !f.getName().contains("Encore DVD") && !f.getName().contains("16 GB Photo card") && !f.getName().contains("Ignore") && !f.getName().contains("Documents") //TEMP && !f.getName().contains("Downloads") //TEMP && !f.getName().contains("TypeGEMs") //TEMP && !f.getName().contains("KofC7032Web") //TEMP && !f.getName().contains("hype mobile docs") //TEMP && !f.getName().contains("Thrive Music Video") //TEMP /*&& f.getPath().contains("Entertainment") //TEMP*/ && !f.getName().contains("Preview Files")) { Log.d(TAG, "Check " + f.getPath()); traverseSmbFiles(f, auth); } else { // Log.d(TAG, "Don't check " + f.getPath()); } } catch (Exception e) { //This folder isn't accessible Log.d(TAG, "Inaccessible: " + f.getName() + " " + e.getMessage()); //This will save us time in the traversal } } else/* if(f.getPath().contains("Films"))*/ { //TEMP //Is this something we want to add? // Log.d(TAG, "Non-directory "+f.getPath()); if (VideoUtils.isVideoFile(f.getPath())) { Log.d(TAG, f.getName() + " is a video"); //Perhaps. Let's do some checking. /* VOB check If the files are in a structure like: { Movie Name } -> VIDEO_TS -> VTS_nn_n.vob Then use the movie name as the source, and each vob url will be added in a comma-separated list to the video url string */ if (f.getPath().contains("VIDEO_TS")) { Log.d(TAG, "Special case for " + f.getPath()); //We have a special case! String grandparentPath = f.getPath().substring(0, f.getPath().indexOf("VIDEO_TS")); SmbFile grandparent = new SmbFile(grandparentPath, auth); //Let's delete this video and all like it from our video database //TODO Makes more sense to not delete and replace a video, just to update in place // Log.d(TAG, "Purge where video_url like "+"%" + grandparent.getPath().replace("'", "\'") + "%"); List<Video> videos = Select.from(Video.class).where(Condition.prop("video_url") .like("%" + grandparent.getPath().replace("'", "\'") + "%")).list(); // Log.d(TAG, "Purging "+videos.size()+" item(s)"); for (Video vx : videos) { // Log.d(TAG, "Deleting "+vx.getVideoUrl()); vx.delete(); } v.setName(grandparent.getName().replace("/", "").replace("_", " ") + ".avi"); //FIXME VOB currently not supported v.setSource(FileSource.SMB); v.setIsMatched(true); //Kind of a lie, but we know it's a thing! //Get all the video files ArrayList<String> urls = new ArrayList<>(); for (SmbFile f2 : grandparent.listFiles()) { for (SmbFile f3 : f2.listFiles()) { if (VideoUtils.isVideoFile(f3.getPath())) { //Presumably in order urls.add(f3.getPath()); } } } // Log.d(TAG, urls.toString()); //This works well v.setVideoUrl(urls); video_folder = true; } else { //Add the video like normal //Let's delete this video and all like it from our video database List<Video> videos = Select.from(Video.class) .where(Condition.prop("video_url").like("%" + f.getPath().replace("'", "''") + "%")) .list(); // Log.d(TAG, "Purging "+videos.size()+" item(s)"); for (Video vx : videos) { // Log.d(TAG, "Deleting "+vx.getVideoUrl()); vx.delete(); } v.setName(f.getName()); v.setSource(FileSource.SMB); v.setVideoUrl(f.getPath()); fileCount++; //Send a request to update metadata every second, to prevent as many 429 errors and memory exceptions Message m = new Message(); Bundle mBundle = new Bundle(); mBundle.putSerializable("VIDEO", v.clone()); mBundle.putInt("WHEN", (int) (1000 * fileCount + Math.round(Math.random() * 100))); m.setData(mBundle); // h.sendEmptyMessageDelayed(1000 * fileCount, 1000 * fileCount); h.sendMessageDelayed(m, 1000 * fileCount); Log.d(TAG, "Queued " + mBundle.getInt("WHEN") + " - " + v.getName()); v.save(); //Need to save here, otherwise purging won't work as expected } // Log.d(TAG, v.toString()); // return; } //Ignore otherwise } } //Let's do VOB video if (video_folder) { // Log.d(TAG, "Done rooting through "+root.getPath()); Log.d(TAG, "Created info for VOB " + v.toString()); fileCount++; //Send a request to update metadata every second, to prevent as many 429 errors and memory exceptions Message m = new Message(); Bundle mBundle = new Bundle(); mBundle.putSerializable("VIDEO", v.clone()); m.setData(mBundle); // h.sendEmptyMessageDelayed(1000 * fileCount, 1000 * fileCount); h.sendMessageDelayed(m, 1000 * fileCount); Log.d(TAG, "Queued " + 1000 * fileCount + " - " + v.getName()); v.save(); //Need to save here, otherwise purging won't work as expected } }