我遇到了 sendKeyDownUpSync 的问题。我想在我的小部件中使用它来控制内置的音乐播放器。它几乎正常工作。几乎是因为当我打电话给函数时:
public void previousTruck()
{
final Instrumentation inst = new Instrumentation();
new Thread(new Runnable() {
public void run() {
new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_MEDIA_PREVIOUS);
}).start();
}
它开始改变我的播放列表中的音乐,但很多时候,为什么? 我想从播放列表中只向下一首歌做一步“。”
答案 0 :(得分:1)
OnCreate
中的某个地方myThread = new Thread()
{
public void run()
{
Instrumentation m_Instrumentation = new Instrumentation();
m_Instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_MEDIA_PREVIOUS);
}
};
previousTruck
中的某个地方myThread.start();
<强> P.S。注意!! 在没有 run()调用的情况下创建Thread对象会导致内存泄漏 - see。如果在 OnCreate 中创建一个线程对象,并且在下一次更改屏幕方向时没有 run()调用,则会在更改屏幕方向时发生。这就是为什么最好的方法是在 start()调用之前立即创建Thread对象。