Articles of 可运行

这个线程安全吗?

我正在为Android编写一个应用程序,并使用工作线程来处理某些信息。 通过我的代码阅读我现在不确定是否线程安全。 我写了一个我的代码的简化版本,我省略了用于与主线程进行通信的Handler对象,显然还有进程本身。 public class myClass implements Runnable { private String myString; @Override public void run() { myString = "Some Value"; } } 这是通过运行类似这样的东西来调用的。 myClass class = new myClass(); Thread thread = new Thread(class); thread.start() 那么,这个代码是不是线程安全的,因为我正在修改run()函数中的myString (在主线程中声明run() ?

检查Android处理程序是否有callback

我有一些代码,它设置了一个计时器,但是如果用户在使用时设置了计时器,我需要删除运行该计时器的runnable并重新启动它。 但是,当没有处理程序callbackrunnable存在,这个代码被称为它崩溃我的应用程序。 所以我需要检查一个处理程序是否正在运行,如果是,然后结束并重新启动它,但通过文档和其他Stackoverflow的问题,我看不出这是可能的。 这里是我的代码,我已经评论了只有在处理程序可运行的情况下才应该执行的代码: submitTimer.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { String s = timer.getText().toString(); if(!s.equals("")) { //I NEED TO CHECK A RUNNABLE HANDLER EXISTS AND IF SO THEN RUN THIS CODE, IF NOT IGNORE THIS CODE Map.handler.removeCallbacks(Map.getRunnable()); Map.runnable.run(); //I NEED TO CHECK A RUNNABLE HANDLER EXISTS AND IF SO THEN RUN THIS CODE, IF […]

Androids Handler.post,究竟发生了什么事情

自从几天以来,我试图找出如果我执行代码到底发生了什么 void function(){ //somePreExecutionCode new Handler().post(new Runnable(){ @Override public void run(){ //someCode } }); } 看起来好像不会阻塞UI,所以调用function()的button不会卡在点击位置,直到someCode完成。 但是,如果某个PreExecutionCode启动一个progressBar,那么当某个代码完成时,progressBar将完全显示在同一时刻。 我知道,有AsyncTasks,但有没有其他的可能? 和最新的区别 new Handler().post 和 View.post ?

在Android UI线程上花费大量的计算

我的Android应用程序使用了一个特别大的计算,使系统崩溃,因为它在Activity中的UI线程上。 我对multithreading没有多less信心,所以我想获得一些关于如何正确执行的提示。 这是我的 class ActivtyName extends Activity{ boolean threadcomplete = false; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //stuff Runnable newthread = new Runnable(){ @Override public void run() { doBigComputation(); threadcomplete=true; } }; newthread.run(); boolean b = true; while(b){ if(threadcomplete){ b=false; startTheApp(); } } } } 现在,我很确定我所做的不是“正确的”。 (这似乎工作,系统不会崩溃)。 基本上,我不知道如何可以告诉UI线程没有这个布尔,线程完成newthread已经完成计算。 有没有一个“正确”的方式来做到这一点?

Android意图select器显示缓慢

当用户有很多可以接受某种意图的应用程序时,意念select器需要一段时间才能加载,至less需要大量的时间 然而这个等待发生在我启动意图之后,有什么办法可以build立某种加载指标或中介视觉元素,以使用户不那么注意时间?

当应用程序转到后台时如何停止运行?

我试图build立一个可以每隔5秒加载广告的runnable(当然5秒太快了,这只是为了testing的目的) 这是我的代码: package com.admobsdk_dfp_handler; import com.google.ads.*; import com.google.ads.doubleclick.*; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.view.Menu; import android.widget.RelativeLayout; public class AdMobSDK_DFP_Handler extends Activity { private DfpAdView adView; private Handler handler = new Handler(); private Runnable runnable = new Runnable() { public void run() { adView.loadAd(new AdRequest()); handler.postDelayed(this, 5000); } }; @Override protected void onCreate(Bundle savedInstanceState) […]

Android:一个所有可运行的处理程序?

我可以在我的活动中使用一个处理程序的所有可运行的,或者我应该有多个处理程序的实例,每一个可运行?

新的Runnable()但没有新的线程?

我试图了解这里的代码,特别是匿名类 private Runnable mUpdateTimeTask = new Runnable() { public void run() { final long start = mStartTime; long millis = SystemClock.uptimeMillis() – start; int seconds = (int) (millis / 1000); int minutes = seconds / 60; seconds = seconds % 60; if (seconds < 10) { mTimeLabel.setText("" + minutes + ":0" + seconds); } else […]

Android:如何停止Runnable?

我试过这种方式: private Runnable changeColor = new Runnable() { private boolean killMe=false; public void run() { //some work if(!killMe) color_changer.postDelayed(changeColor, 150); } public void kill(){ killMe=true; } }; 但是我不能访问kill()方法!

我如何将一个variables传递给一个新的Runnable声明?

我有以下几点: Runnable done = new Runnable() { public void run() { System.out.println("Hello"); } }; 然后,在我的Android活动中,我会打电话如下所示: runOnUIThread(done); 然后我打电话。 不过,我希望"Hello"不要硬编码,所以我可以通过它。否则,我将不得不有一个这样的声明,我想要打印每个string。 (这实际上是一个机器人问题,但把它缩小到基本的Java,所以更容易回答) 谢谢