您好,我是Android开发的新手,正在努力学习它! 我只是想在我的应用程序中用Java Thread更新我的通知(我只是在学习并且好奇我该怎么做)。
我有一个活动,一个增加Integer值的简单线程。然后,我只想在整数值递增时在我的通知中显示它! 我的代码如下:
public class MainActivity extends Activity{
private final String LOG_KEY = this.getClass().getSimpleName();
private int c = 0;
private boolean flag = true;
private NotificationCompat.Builder builder;
private NotificationManager notificationManager;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
builder = new NotificationCompat.Builder(MainActivity.this)
.setSmallIcon(R.mipmap.ic_launcher)
.setAutoCancel(false);
builder.setOngoing(true);
notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Thread t = new Thread(new MyThread());
t.start();
}//OnCreate ends
@Override
protected void onStop() {
super.onStop();
flag = false;
}//stop ends
@Override
protected void onDestroy() {
super.onDestroy();
flag = false;
}//destroy ends
private class MyThread implements Runnable {
@Override
public void run() {
while (flag) {
c+=1;
showNotification(Integer.toString(c) + " Counts");
}//while ends
}//run ends
private void showNotification(String msg) {
try {
//set the notification
builder.setContentText(msg);
notificationManager.notify(0, builder.build());
} catch (Exception exp) {
Log.e("xmn", exp.toString());
}//try catch ends
}//showNotification ends
}//private class ends
}//MainActivity class ends here
从我的代码开始,会显示通知并更新值!但问题是它会突然冻结设备和应用程序!
我只是想帮助我做错了,因为我是一个新手,并且自己学习。任何帮助和想法将受到高度赞赏!
由于
答案 0 :(得分:0)
您不应该创建通知,然后在线程中尽可能快地更新通知。它真的不是为此设计的。
我能想到的最符合您用例的是使用通知来显示进度。看到这个链接:
Displaying Progress in a Notification
您可能希望在线程中设置某种速率限制器,除非您希望计数非常快地达到非常高的数量。也许让线程在更新之间暂停一段时间。
答案 1 :(得分:0)
问题在于您生成的通知数量超过设备可以使用的数量。
为了您的目标(只是学习),您可以在通知之间添加一些暂停:
boolean videoPlay=false;
webView.setWebChromeClient(new WebChromeClient() {
@Override
public Bitmap getDefaultVideoPoster() {
super.getDefaultVideoPoster();
videoPlay=true;
Log.d("vplayyyyyyyy",String.valueOf(videoPlay));
return null;
}
});