标签: handler

Android - 按住按钮重复操作

大家早,

我会直接承认,我是开发新手并尝试使用Android.我一直在尝试搜索'网络以找到关于如何实现一些"按钮重复操作"的建议 - 我已经从按钮创建了一个自定义小键盘,并希望有类似退格的行为.到目前为止,我曾经拜访过一位没有编过Android的朋友,但他做了很多C#/ Java,似乎知道他在做什么.

下面的代码工作正常,但我觉得它可以更整齐地完成.如果我错过了比特,我很抱歉,但希望这能解释我的做法.我认为onTouchListener没问题,但处理Threads的方式并不合适.

有没有更好或更简单的方法来做到这一点?

谢谢,

中号

public class MyApp extends Activity {

private boolean deleteThreadRunning = false;
private boolean cancelDeleteThread = false;
private Handler handler = new Handler();

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    //May have missed some declarations here...

    Button_Del.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {

           switch (event.getAction())
           {
               case MotionEvent.ACTION_DOWN:
               {
                   handleDeleteDown();
                   return true;
               }

               case MotionEvent.ACTION_UP:
               {
                   handleDeleteUp();
                   return true;
               }

               default:
                   return false;
           }
        }

        private void handleDeleteDown() {

            if …
Run Code Online (Sandbox Code Playgroud)

android handler ontouchlistener

53
推荐指数
5
解决办法
4万
查看次数

为什么在runOnUiThread使用Handler时也一样?

我遇到过HandlerrunOnUiThread概念.但对我来说,它们似乎仍然存在疑问,因为它们确实存在哪些不同之处.

它们都旨在从后台线程执行UI操作.但是,当我们在两种方法中进行选择时,要考虑的因素是什么.

例如,考虑一个Runnable Thread在后台执行Web服务的人,现在我想更新UI.

更新我的UI的最佳方法是什么?我应该去Handler还是runOnUiThread

我仍然知道我可以使用AsyncTask并使用onPostExecute.但我只想知道其中的区别.

multithreading android handler android-asynctask

53
推荐指数
1
解决办法
2万
查看次数

ASP.NET:如何从处理程序访问Session?

我正在尝试一些值存储在会话处理程序页面,我做一个重定向到一个页面的WebForms,这将拿起之前会话值和预填的WebForm:

public class Handler : IHttpHandler
{
   public void ProcessRequest(HttpContext context)
   {
      ...
      context.Session["StackOverflow"] = "overflowing";
      context.Response.Redirect("~/AnotherPage.aspx");
      ...
   }
   ...
 }
Run Code Online (Sandbox Code Playgroud)

除了context.Sessionobject是null.

如何从处理程序访问会话状态?

asp.net session session-state handler ihttphandler

47
推荐指数
3
解决办法
4万
查看次数

CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及视图

我在Android中遇到以下错误的问题:

CalledFromWrongThreadException;:只有创建视图层次结构的原始线程才能触及其视图

它似乎发生在我尝试更新我的Activity中的Textview时,更新TextView的调用来自我的Activity,但我仍然得到上述错误.

我喜欢这样:

onCreate() - 设置按钮和文本视图.

onStateChange() - 一个关于状态更改通知的侦听器,当收到通知时,如果将TextView更改为说一些不同的文本.

当我收到新文本的通知时,我尝试更改TextView,如下所示:

((TextView)findViewById(R.id.title)).setText("Some Text");
Run Code Online (Sandbox Code Playgroud)

但是我得到了上面的错误.

从谷歌搜索它,似乎我应该使用处理程序来更改TextView或使用AsyncTask?

任何人都可以解释哪一个更好用,为什么?

编辑:新增代码片段:


     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);  

            setContentView(R.layout.my);

            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);  

            ((TextView)findViewById(R.id.time)).setText("Hello Text");


            findViewById(R.id.keyboardimage).setOnClickListener(new OnClickListener() {
                public void onClick(View v) {

                    Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"));
                    startActivity(dialIntent);

                        dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.FLAG_SOFT_KEYBOARD));
                        dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));       
                }
        });

     }
Run Code Online (Sandbox Code Playgroud)
//CallBacks from running Service

private final ICallDialogActivity.Stub iCallDialogActivity = new ICallDialogActivity.Stub(){

@Override
public void onStateChanged(int callState)
                throws RemoteException {    
            switch(callState){
            case GlobalData.CALL_STATUS_IDLE:

                break;

            case GlobalData.CALL_STATUS_DISCONNECTING:
                byeSetup();
                break;
    } …
Run Code Online (Sandbox Code Playgroud)

android handler android-asynctask

47
推荐指数
2
解决办法
5万
查看次数

如何通过多个活动返回结果

在我的应用程序的某些部分,有一个这样的活动结构:

在此输入图像描述

Activity A是我的家庭活动,我在每个流程或流程后回来.
Activity B是一个简单的确认活动.
Activity C是另一项确认活动.
Activity D做一些过程,最后它将结果返回到我的家庭活动(Activity A).

要求:

Activity B并且C:

  • 必须在那里,不能合并在一起.
  • 当它点击取消按钮时,它会调用finish()并且什么都不做.
  • 当单击OK按钮时,它跟随流和当前活动调用 finish()

题:

我正在考虑使用startActivityForResult()但我从来没有用过它来通过多个活动传递结果.
我还想通过一个handler(创建Activity A)调用一些方法Activity A并执行Activity D...

我怎么能实现它?

android handler android-intent android-activity

47
推荐指数
2
解决办法
1万
查看次数

Android中的处理程序和内存泄漏

请看下面的代码:

public class MyGridFragment extends Fragment{

     Handler myhandler = new Handler() {
    @Override
    public void handleMessage(Message message) {
        switch (message.what) {
        case 2: {

            ArrayList<HashMap<String,String>> theurls = (ArrayList<HashMap<String,String>>) message.obj;
            urls.addAll(theurls);
            theimageAdapter.notifyDataSetChanged();
            dismissBusyDialog();
            break;
        }}}};
         }
Run Code Online (Sandbox Code Playgroud)

当我使用这样的处理程序时,我得到一个警告"处理程序应该是静态的,否则它容易发生内存泄漏." 有人能告诉我这样做的最佳方法是什么?

android handler

46
推荐指数
3
解决办法
3万
查看次数

JavaFX:阶段关闭处理程序

我想在关闭JavaFX应用程序之前保存文件.

这就是我在以下方式设置处理程序的方式Main::start:

primaryStage.setOnCloseRequest(event -> {
    System.out.println("Stage is closing");
    // Save file
});
Run Code Online (Sandbox Code Playgroud)

Stage::close当按下按钮时控制器调用:

@FXML
public void exitApplication(ActionEvent event) {
    ((Stage)rootPane.getScene().getWindow()).close();
}
Run Code Online (Sandbox Code Playgroud)

如果我关闭窗口,单击窗口边框上的红色X(正常方式),然后我得到输出消息" Stage is closing",这是所需的行为.

但是,在调用Controller::exitApplication应用程序时关闭而不调用处理程序(没有输出).

如何让控制器使用我添加的处理程序primaryStage

java javafx handler javafx-8

45
推荐指数
2
解决办法
7万
查看次数

自定义事件模型,不使用JavaScript中的DOM事件

我是JavaScript和编程的新手,我对对象和事件有一些疑问.

说我有一个对象:

var computer = {
    keyboard: {}
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一种向键盘对象注册事件的方法:

computer.keyboard.registerEvent( "keyEscape" );
Run Code Online (Sandbox Code Playgroud)

点燃活动:

computer.keyboard.dispatchEvent( "keyEscape" );
Run Code Online (Sandbox Code Playgroud)

并创建事件处理程序:

computer.keyboard.addEventListener( "keyEscape", function() {...} );
Run Code Online (Sandbox Code Playgroud)

我知道如何使用DOM元素而不是对象.这是可以用JavaScript完成的(也许是在JQuery的帮助下)?

即使是最轻微的指导也会受到极大的赞赏.

javascript events object handler

41
推荐指数
5
解决办法
1万
查看次数

在后台线程中运行处理程序消息

我想在后台线程中运行一些Runnable.我想使用Handler,因为它很方便延迟.我的意思是

handler.post(runnable, delay);
Run Code Online (Sandbox Code Playgroud)

其中runnable应该在后台 Thread中运行.是否可以创建这样的Handler?在某处有"背景"Looper或者我该如何创建它?

PS我知道如何使用自定义类扩展Thread,但它需要比处理程序方式更多的编码工作.所以请不要发布其他解决方案或类似的东西

handler.post(new Runnable() {
    @Override
    public void run() {
        new Thread() {
            @Override
            public void run() {
                //action
            }
        }.start();
    }
});
Run Code Online (Sandbox Code Playgroud)

如果Handler能够以"干净"的方式做到这一点,我就会徘徊.

java multithreading android handler

38
推荐指数
3
解决办法
3万
查看次数

jQuery是否有.delegate('hover')的句柄?

我正在尝试使用:

$('mydiv').delegate('hover', function() {  
    $('seconddiv').show();  
}, function() {  
    //For some reason jQuery won't run this line of code  
    $('seconddiv').hide();  
});
Run Code Online (Sandbox Code Playgroud)

jquery delegates handler

35
推荐指数
2
解决办法
2万
查看次数