作业问题,无法收到广播

作业问题,无法收到广播

public class MainActivity extends AppCompatActivity {
   //private MyBroadcastReceiver myBroadcastReceiver;
   private List<AppInfo> appInfoList,resultList;
   private List<Bean> beanList;
   private Myadapter myadapter;
   private SearchView searchView;
   private ListView listView;
   private static final String TAG = "MainActivity-Tag";


   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       registerBatteryInfo();
       initView();
       Log.e(TAG, "33333333333");

   }

   private void initView() {


       myadapter=new Myadapter(this);

       myadapter.setAppInfoList(appInfoList);

       resultList=new ArrayList<>();
       searchView=findViewById(R.id.searchView);
       listView=findViewById(R.id.show_lv);

       searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
           @Override
           public boolean onQueryTextSubmit(String s) {
               return false;
           }

           @Override
           public boolean onQueryTextChange(String s) {
               if (!TextUtils.isEmpty(s)){
                   resultList.clear();
                   for (int i=0;i<appInfoList.size();i++){
                       if ((appInfoList.get(i).getName()).contains(s)){
                           resultList.add(appInfoList.get(i));
                       }
                   }
                   myadapter.setAppInfoList(resultList);
                   myadapter.notifyDataSetChanged();
               }
               else{
                   myadapter.setAppInfoList(appInfoList);
                   myadapter.notifyDataSetChanged();

               }

               return false;
           }
       });
       listView.setAdapter(myadapter);
   }

   @Override
   protected void onPause() {
       super.onPause();
       unregisterReceiver(broadcastReceiver);
   }



   private  void registerBatteryInfo(){
       //myBroadcastReceiver=new MyBroadcastReceiver();
       IntentFilter intentFilter = new IntentFilter();
       intentFilter.addAction("com.sample.custom.action");
       registerReceiver(broadcastReceiver,intentFilter);
   }
   public Bitmap getBitmap(byte[] data){
       return BitmapFactory.decodeByteArray(data, 0, data.length);//从字节数组解码位图
   }


   private BroadcastReceiver broadcastReceiver=new BroadcastReceiver() {
       @Override
       public void onReceive(Context context, Intent intent) {
           Log.e(TAG, "22222222222222");
           if (intent!=null){
               beanList= (List<Bean>) intent.getSerializableExtra("appList");
               appInfoList=new ArrayList<>();
               for (int i=0;i<beanList.size();i++){
                   AppInfo appInfo=new AppInfo();
                   Bitmap bitmap=getBitmap(beanList.get(i).getPic());
                   appInfo.setIcon(bitmap);
                   appInfo.setName(beanList.get(i).getName());
                   appInfoList.add(appInfo);
               }

               Log.e(TAG, appInfoList.get(1).getName()+"111111111111111111");
           }

       }
   };
}

===============================================================

public class MyService extends Service {
   private final String MY_ACTION="com.sample.custom.action";
   public MyService() {
   }

   @Override
   public IBinder onBind(Intent intent) {
       // TODO: Return the communication channel to the service.
       throw new UnsupportedOperationException("Not yet implemented");
   }

   @Override
   public void onCreate() {
       super.onCreate();

       new Thread(){
           @Override
           public void run() {
               super.run();
               List<Bean> beanList=getBeans();
               Intent intent=new Intent();
               intent.setAction(MY_ACTION);

               intent.putExtra("appList", (Serializable) beanList);
               MyService.this.sendBroadcast(intent);
               Log.e("MainActivity-Tag", "service....thread");



           }
       }.start();

   }

   public List<Bean> getBeans(){
       List<Bean> beans=new ArrayList<>();
       PackageManager packageManager = getPackageManager();
       List<ApplicationInfo> applicationInfos = packageManager.getInstalledApplications(0);
       for (int i=0;i<applicationInfos.size();i++){
           //AppInfo appInfo=new AppInfo();
           Bean bean=new Bean();
           bean.setName(applicationInfos.get(i).loadLabel(packageManager).toString());
           BitmapDrawable bitmapDrawable = (BitmapDrawable) applicationInfos.get(i).loadIcon(packageManager);
           Bitmap bitmap=bitmapDrawable.getBitmap();
           bean.setPic(getBytes(bitmap));
           beans.add(bean);
       }
       return beans;
   }
   public static byte[] getBytes(Bitmap bitmap){
       //实例化字节数组输出流
       ByteArrayOutputStream baos = new ByteArrayOutputStream();
       bitmap.compress(Bitmap.CompressFormat.PNG, 0, baos);//压缩位图
       return baos.toByteArray();//创建分配字节数组
   }
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
提问者 vilden 2018-01-27 22:29:42

没办法进入onReceive方法,找了好久不知道是什么原因,麻烦老师帮看看

  • 你在onReceive方法打断点调试,看是否会进入到该方法
    2018-01-28 19:22:22
  • 提问者 vilden 回复 Tender10 #2
    确实没进入啊,自己又单独写了一个简单DEMO,不加其他功能,就只是application打开一个service,然后发送广播,又是正常的,不知道什么原因了
    2018-01-29 11:36:46
  • irista23 回复 提问者 vilden #3
    registerBatteryInfo()方法里你把注释打开,registerReceiver(broadcastReceiver,intentFilter);broadcastReceiver改成myBroadcastReceiver
    2018-01-29 16:16:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android数据通信开发与应用2018版
  • 参与学习           人
  • 提交作业       147    份
  • 解答问题       687    个

本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师