使用处理程序从服务更新活动的ui而不调用oncreate()和start()服务的命令

病毒性的

我使用处理程序从服务中更新UI或每15秒显示活动类,所以我在活动中定义了处理程序对象,并使用服务程序中的处理程序方法MainActivity.handler.sendemptymessage()从服务类中更新UI或每15秒显示敬酒中,但是什么当我启动服务时,单击服务类的oncreate()按钮时没有发生像创建服务那样向我显示吐司的情况,也没有显示onStartCommand吐司,并且仅一次没有显示活动类的吐司,所以,在我的以下代码中出了什么问题我在活动类中定义处理程序对象的正确方法,我不知道请给我适当的解决方案。我知道其他组件可以将ui从服务更新为活动,但是我只想通过handler和sendemptymessage.thanks提前实现

MainActivity->

public class MainActivity extends ActionBarActivity {
    static Activity thisActivity = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b1 = (Button) findViewById(R.id.button1);
        Button b2 = (Button) findViewById(R.id.button2);
        thisActivity = this;


        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                startService(new Intent(MainActivity.this, ServiceDemo.class));
            }
        });

        b2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                stopService(new Intent(MainActivity.this, ServiceDemo.class));
            }

        });

    }

    static Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {

            // This is where main activity thread receives messages
            // Put here your handling of incoming messages posted by other
            // threads
            super.handleMessage(msg);

            if (msg.what == 0) {

                show();
            }
        }

    };

    public static void show() {

        Toast.makeText(thisActivity, "recive called", Toast.LENGTH_SHORT)
                .show();

    }

}

Service.class- >

public class ServiceDemo extends Service {
    int mStartMode;
    /** interface for clients that bind */
    IBinder mBinder;
    /** indicates whether onRebind should be used */
    boolean mAllowRebind;

    /** Called when the service is being created. */
    @Override
    public void onCreate() {
        Toast.makeText(getApplicationContext(), " service created",
                Toast.LENGTH_SHORT).show();
    }

    /** The service is starting, due to a call to startService() */
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        Toast.makeText(getApplicationContext(), "service started",
                Toast.LENGTH_SHORT).show();
        while (true) {
            try {
                Thread.sleep(15000);
                MainActivity.handler.sendEmptyMessage(0);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return mStartMode;
        }

    }

    /** A client is binding to the service with bindService() */
    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }

    /** Called when all clients have unbound with unbindService() */
    @Override
    public boolean onUnbind(Intent intent) {
        return mAllowRebind;
    }

    /** Called when a client is binding to the service with bindService() */
    @Override
    public void onRebind(Intent intent) {

    }

    /** Called when The service is no longer used and is being destroyed */
    @Override
    public void onDestroy() {
        Toast.makeText(getApplicationContext(), "service destroyed",
                Toast.LENGTH_SHORT).show();
    }
}
Mayur R.Amipara

在处理程序中或您需要执行的任何操作中,当您需要更新Ui而不是Use时,

runOnUiThread(new  Runnable()
            {
                public void run()
                {
                    //Code for ui update
                }
            });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

异步读取服务器BoostAsio不调用处理程序

来自分类Dev

使用处理程序更新UI

来自分类Dev

使用处理程序无法在backround线程中更新UI

来自分类Dev

无法使用处理程序中的消息更新UI

来自分类Dev

boost :: asio :: deadline_timer不调用处理程序

来自分类Dev

boost :: asio :: deadline_timer不调用处理程序

来自分类Dev

使用处理程序或任何其他技术填充listView /从onCreate外部更新listView

来自分类Dev

使用处理程序进行改造调用

来自分类Dev

为什么数据库在服务中不调用onCreate?

来自分类Dev

使用通用处理程序从服务器下载文件

来自分类Dev

在onCreate()之前,活动无法使用系统服务

来自分类Dev

Boost Asio connect_async永不调用处理程序

来自分类Dev

Boost Asio connect_async永不调用处理程序

来自分类Dev

为什么Unity Cient不调用服务器命令?

来自分类Dev

调用Servlet的服务和init方法,但不调用

来自分类Dev

应用程序在启动时崩溃-“ onCreate()之前活动无法使用系统服务”

来自分类Dev

使用处理程序发布到UI线程

来自分类Dev

使用处理程序时

来自分类Dev

无法使用处理程序

来自分类Dev

Ajax不调用WCF服务

来自分类Dev

使用Powershell远程处理从许多Web服务器获取IIS绑定,调用命令和模块Webadministration

来自分类Dev

尝试实现getSystemService()的onCreate()之前的活动无法使用的系统服务

来自分类Dev

从集成测试中调用处理程序

来自分类Dev

Scala调用处理程序导致ClassCastException

来自分类Dev

将通用处理程序转换为服务器控制

来自分类Dev

在不调用onAttach,onCreate,onCreateView等的活动中替换片段

来自分类Dev

startactivity方法不调用预期活动的onCreate方法吗?

来自分类Dev

startactivity方法不调用预期活动的onCreate方法吗?

来自分类Dev

仅在调用活动的 onCreate() 结束后才调用 Android 服务 onstart()

Related 相关文章

  1. 1

    异步读取服务器BoostAsio不调用处理程序

  2. 2

    使用处理程序更新UI

  3. 3

    使用处理程序无法在backround线程中更新UI

  4. 4

    无法使用处理程序中的消息更新UI

  5. 5

    boost :: asio :: deadline_timer不调用处理程序

  6. 6

    boost :: asio :: deadline_timer不调用处理程序

  7. 7

    使用处理程序或任何其他技术填充listView /从onCreate外部更新listView

  8. 8

    使用处理程序进行改造调用

  9. 9

    为什么数据库在服务中不调用onCreate?

  10. 10

    使用通用处理程序从服务器下载文件

  11. 11

    在onCreate()之前,活动无法使用系统服务

  12. 12

    Boost Asio connect_async永不调用处理程序

  13. 13

    Boost Asio connect_async永不调用处理程序

  14. 14

    为什么Unity Cient不调用服务器命令?

  15. 15

    调用Servlet的服务和init方法,但不调用

  16. 16

    应用程序在启动时崩溃-“ onCreate()之前活动无法使用系统服务”

  17. 17

    使用处理程序发布到UI线程

  18. 18

    使用处理程序时

  19. 19

    无法使用处理程序

  20. 20

    Ajax不调用WCF服务

  21. 21

    使用Powershell远程处理从许多Web服务器获取IIS绑定,调用命令和模块Webadministration

  22. 22

    尝试实现getSystemService()的onCreate()之前的活动无法使用的系统服务

  23. 23

    从集成测试中调用处理程序

  24. 24

    Scala调用处理程序导致ClassCastException

  25. 25

    将通用处理程序转换为服务器控制

  26. 26

    在不调用onAttach,onCreate,onCreateView等的活动中替换片段

  27. 27

    startactivity方法不调用预期活动的onCreate方法吗?

  28. 28

    startactivity方法不调用预期活动的onCreate方法吗?

  29. 29

    仅在调用活动的 onCreate() 结束后才调用 Android 服务 onstart()

热门标签

归档