0

次のコードを使用して、Android アクティビティを作成し、このアクティビティからサービスを開始しています。ここで、このサービスから画面に「Hello user」というテキストを表示したいと思います。つまり、サービスがこの表示をトリガーする必要があります。Toast.maketext.show を使用できますが、数秒後に表示が消えます。

    new Thread(new Runnable() {
        @Override
        public void run() {
            startAdapterIntent.setAction("START_ADAPTER");      
            startService(startAdapterIntent);
            System.out.println("Thread2: Adapter Service started.");                
        }
    }).start();

それ、どうやったら出来るの?

このリンクを使用しようとしました: Making changes to Main Activity UI from thread in Service

およびその(おそらく)親リンク http://developer.android.com/reference/android/app/Service.html セクション「リモートメッセンジャーサービスのサンプル」

この 2 番目のリンクを使用しているときに、ServiceConnection の onServiceConnected 部分が機能していないように見えますか? 助けてください。ありがとうございました。

4

1 に答える 1

0

サービス内から、タイマー タスクによってトリガーできるハンドラーを作成する必要があります。ハンドラーは、現在アクティブな UI スレッドとの通信を直接担当する必要があります。例は次のようになります。

    long delay  = 3000;
    long period = 3000; 
    TimerTask mDoTask = new TimerTask() {
        @Override
        public void run() {
            xHandler.sendMessage(Message.obtain(xHandler, SOME_OPERATION));
        }
    };
    mT.scheduleAtFixedRate(mDoTask, delay, period); 
Handler xHandler=new Handler(){
        @Override
        public void handleMessage(Message message){
            switch (message.what){
            case SOME_OPERATION:
                YourMethod();// in this method you can display your text 
                break;
            }
        }
     };
于 2013-06-17T06:04:55.773 に答える